FranciscoA wrote:Angel, Jose Luis. Gracias por contestas.
Angel ya he revisado esa direccion y bajé algunos que voy a probar. Gracias.
José Luis, gracias por tu envío. Lo espero.
Quiero comentarles que la única forma que he encontrado para hacer funcionar esta EPSON TM-U220PD M188D, es instalando Generic Text .
Sin embargo, ahora tengo los siguientes inconvenientes, es la primera vez que uso estas impresoras, a ver si pueden ayudarme a solucionarlos.
1- Como hacer para que al finalizar de imprimir el texto, no avance tantas lineas?
2- La impresorcita ésta, viene con una cinta rojo-negro y solo imprime en rojo. Cómo modificar este comportamiento?
3- He probado muchos de los códigos mostrados aqui en el foro para el corte de papel, sin resultados. Cómo hacer para que haga el corte automático?
Repito: la impresora es EPSON TM-U220PD M188D, pero he instalando una Generic Text para que pueda imprimir.
Quizás los drivers que me enviará Jose Luis funciones, pero "por si las moscas" acudo a los que ya han tenido experiencia con este modelo de impresora.
Muchas gracias.
FranciscoA wrote:Lo acabo de resolver.
Solo era usar: PrinterPortToName() y PrintFileRaw()
Gracias a todos.
local xxx,xxx,xxx
local oPrn, cPort:= UPPER( ALLTRIM( GetPvProfString("Config","PuertoPrn","LPT1",cIniFile) ) )
local cPrinter := PrinterPortToName(cPort)
oPrn := TDosPrn():New("PRUEBA.TXT")
oPrn:StartPage()
oPrn:Say( nLin, nCol1, PADC(EMPRESA,38) )
nLin+= 1
oPrn:Say( nLin, nCol1, PADC(cDirecc,38) )
nLin+= 1
oPrn:Say( nLin, nCol1, PADC(cTelef,38) )
oPrn:EndPage()
oPrn:End()
PrintFileRaw( cPrinter, TrueName("PRUEBA.TXT"), "ImpreFactu" )
return nil
//------------------------------------------------------------------------------
METHOD BtnEnviarComandasClick( oSender ) CLASS TFormComandaPC
.
.
.
cSQLQuery:= "SELECT * FROM cat_terminales WHERE "+;
"id_empresa='" + AppData:cIDCompany + "' AND "+;
"id_terminal='" + GetComputerName() + "'"
oSQLTerminal:= AppData:oMySqlDS:Query( cSQLQuery )
oSQLTerminal:Open()
IF Len( aCocina ) > 0
aCocina:= ASORT( aCocina,,, { | a1,a2 | a1[12] < a2[12] } )
lSeparar:= IF( aCocina[1,11]="SI", .T., .F. )
IF AllTrim(oSQLTerminal:TIPO_COCINA)=="Termica"
::PrnComandaWindows(aCocina, lSeparar, "COCINA")
ELSE
::PrnComandaTexto(aCocina, lSeparar)
ENDIF
ENDIF
oSQLTerminal:Close()
cSQLQuery:= "SELECT * FROM cat_terminales WHERE "+;
"id_empresa='" + AppData:cIDCompany + "' AND "+;
"id_terminal='" + GetComputerName() + "'"
oSQLTerminal:= AppData:oMySqlDS:Query( cSQLQuery )
oSQLTerminal:Open()
IF Len( aBarra ) > 0
aBarra:= ASORT( aBarra,,, { | a1,a2 | a1[12] < a2[12] } )
lSeparar:= .F.
IF AllTrim(oSQLTerminal:TIPO_BARRA)=="Termica"
::PrnComandaWindows(aBarra,lSeparar, "BARRA")
ELSE
::PrnComandaTexto(aBarra,lSeparar)
ENDIF
ENDIF
oSQLTerminal:Close()
WAITOFF()
::Close()
RETURN Nil
//------------------------------------------------------------------------------
METHOD PrnComandaTexto( oSender ) CLASS TFormComandaPC
RETURN NIL
//------------------------------------------------------------------------------
METHOD PrnComandaWindows(aComandas, lCortarEnLinea, cImpresora ) CLASS TFormComandaPC
LOCAL oFontTit3, oFontTit4, cFecha, cLinea, aItems, oSQLTerminal, nImpresora, cSubLinea
LOCAL nColum, nFilas, oSQLDetalle, cSQLQuery, cMesero, cCantidad, lPrimera, aDetalle
LOCAL nPartida
cSQLQuery:= "SELECT * FROM cat_terminales WHERE "+;
"id_empresa='" + AppData:cIDCompany + "' AND "+;
"id_terminal='" + GetComputerName() + "'"
oSQLTerminal:= AppData:oMySqlDS:Query( cSQLQuery )
oSQLTerminal:Open()
oFontTit3:= TFont():New()
WITH OBJECT oFontTit3
:cName := "Arial"
:nSize := 12
:lBold := .F.
END WITH
oFontTit4:= TFont():New()
WITH OBJECT oFontTit4
:cName := "Arial"
:nSize := 12
:lBold := .F.
:lItalic:= .T.
END WITH
IF cImpresora="COCINA"
cImpresora:= AllTrim(oSQLTerminal:comandas_cocina)
::nPrinterCmd:= aScan( Printer:aPrinterNames, {|Imp| Imp == cImpresora } )
ELSEIF cImpresora="BARRA"
cImpresora:= AllTrim(oSQLTerminal:comandas_barra)
::nPrinterCmd:= aScan( Printer:aPrinterNames, {|Imp| Imp == cImpresora } )
ENDIF
::PrnHeaderComanda()
nFilas:= ::oPrnComanda:PhysicalOffset()[2]
nColum:= ::oPrnComanda:PhysicalOffset()[1]
nFilas:= ::oPrnComanda:PhysicalOffset()[2]
nColum:= ::oPrnComanda:PhysicalOffset()[1]
nPartida:= aComandas[1,14]
FOR EACH aItems IN aComandas
IF nPartida!=aItems[14]
nPartida:= aItems[14]
::nFilaComanda+= 15
::oPrnComanda:oCanvas:MoveTo( 150, ::nFilaComanda+2 )
::oPrnComanda:oCanvas:LineTo( 650, ::nFilaComanda+2 )
::nFilaComanda+= 15
ENDIF
::oPrnComanda:oCanvas:oFont:= oFontTit3
cCantidad:= Transform( aItems[6],"@Z 999.99")
::oPrnComanda:oCanvas:TextOut( nColum+5, ::nFilaComanda, cCantidad )
::oPrnComanda:oCanvas:TextOut( nColum+150, ::nFilaComanda, aItems[3] )
IF !Empty(aItems[8])
::nFilaComanda+= 50
::oPrnComanda:oCanvas:oFont:= oFontTit4
::oPrnComanda:oCanvas:TextOut( nColum+15, ::nFilaComanda, Left(AllTrim(aItems[8]),32) )
IF !Empty( SubStr( AllTrim(aItems[8]), 33 ) )
::nFilaComanda+= 45
::oPrnComanda:oCanvas:TextOut( nColum+15, ::nFilaComanda, SubStr( AllTrim(aItems[8]), 33 ) )
ENDIF
ENDIF
::nFilaComanda+= 45
NEXT
ENDIF
::oPrnComanda:EndPage()
::oPrnComanda:EndDoc()
::oPrnComanda:= NIL
CortaPapel(cImpresora)
oFontTit3:Destroy()
oFontTit4:Destroy()
::oMemDSDetalle:Refresh()
RETURN NIL
//------------------------------------------------------------------------------
METHOD PrnHeaderComanda() CLASS TFormComandaPC
LOCAL oFontTit1, oFontTit2, oFontTit3, oFontTit4, oFontTit5, oPen, cFecha
LOCAL nColum, nFilas, cMesero, cCantidad
cFecha:= StrZero( Day(AppData:dFechaTPV),2) + "-"+;
Left(Upper( CMonth(AppData:dFechaTPV)),3) + "-"+;
Transform( Year(AppData:dFechaTPV),'9999')
oPen:= TPen():Create( PS_SOLID, 1)
::oPrnComanda:= TPrinter():Create()
::oPrnComanda:nPrinterIndex:= ::nPrinterCmd
::oPrnComanda:lPreview := .F.
::oPrnComanda:cJobTitle:= "Comanda "
::oPrnComanda:StartDoc()
::oPrnComanda:StartPage()
::oPrnComanda:oCanvas:nMapMode := mmHIMETRICS
nFilas:= ::oPrnComanda:PhysicalOffset()[2]
nColum:= ::oPrnComanda:PhysicalOffset()[1]
oFontTit1:= TFont():New()
WITH OBJECT oFontTit1
:cName := "Arial" // TEXTO DE MESA
:nSize := 14
:lBold := .F.
END WITH
oFontTit2:= TFont():New()
WITH OBJECT oFontTit2
:cName := "Arial" // numero de mesa
:nSize := 26
:lBold := .T.
END WITH
oFontTit3:= TFont():New()
WITH OBJECT oFontTit3
:cName := "Arial" // TEXTO DE PRODUCTOS
:nSize := 12
:lBold := .F.
END WITH
oFontTit4:= TFont():New()
WITH OBJECT oFontTit4
:cName := "Arial" // clave y nombre del mesero
:nSize := 14
:lBold := .T.
END WITH
oFontTit5:= TFont():New()
WITH OBJECT oFontTit5
:cName := "Arial"
:nSize := 18
:lBold := .F.
END WITH
WITH OBJECT ::oPrnComanda:oCanvas
:oFont:= oFontTit1
:oPen:= oPen
:MoveTo( 5, 320 )
:LineTo( 750, 320 )
:MoveTo( 5, 375 )
:LineTo( 750, 375 )
::nFilaComanda:= 130
:oFont:= oFontTit5
:TextOut( nColum+15, ::nFilaComanda, "MESA")
:oFont:= oFontTit2
:TextOut( nColum+200, ::nFilaComanda-20, AppData:cNumeroMesaTPV )
::nFilaComanda+= 70
:oFont:= oFontTit1
:TextOut( nColum+15, ::nFilaComanda, "FECHA:" )
:TextOut( nColum+200, ::nFilaComanda+3, cFecha )
:TextOut( nColum+500, ::nFilaComanda+3, Left(Time(),5) )
::nFilaComanda+= 55
:oFont:= oFontTit1
:TextOut( nColum+15, ::nFilaComanda, "MESERO:" )
:oFont:= oFontTit4
:TextOut( nColum+220, ::nFilaComanda, Right(AllTrim(AppData:cMeseroTPV),3) )
:TextOut( nColum+350, ::nFilaComanda, AppData:cNombreMeseroTPV )
::nFilaComanda+= 65
:oFont:= oFontTit3
:TextOut( nColum+15, ::nFilaComanda, "CANTID" )
:TextOut( nColum+180, ::nFilaComanda, "NOMBRE DEL PRODUCTO" )
END WITH
::nFilaComanda:= ::nFilaComanda + 65
oPen:Destroy()
oFontTit1:Destroy()
oFontTit2:Destroy()
oFontTit3:Destroy()
oFontTit4:Destroy()
RETURN NIL
FUNCTION Imprimir()
aOrdenado:= ORDENAR( aConsumo )
cComensal:= aOrdenado[1,12]
cCutter:= ""
FOR ww:= 1 TO LEN( aOrdenado )
cCutter:= aOrdenado[1,19]
IF cPtoAuxi != aOrdenado[ww,7]
IF lCierra
IF lFinal
// @ pRow()+1, 00 SAY chr(27)+"!"+ chr(8)
@ pRow()+2, 01 SAY "- - - - - - - - - - - - - - -"
IF ALLTRIM(aOrdenado[ww,19]) == "SI"
IF cMiniPrint == "E"
FOR nn:=1 TO 8
@ pRow()+1, 01 say ""
NEXT nn
@ pRow()+1, 00 SAY CHR(27) + CHR(109)
ELSE
@ pRow()+1, 00 SAY CHR(27)+ CHR(100) + CHR(49) // "d" + "0,48"
ENDIF
ELSE
FOR nn:=1 TO 6
@ pRow()+1, 01 say ""
NEXT nn
ENDIF
ENDIF
SET PRINTER TO
ENDIF
DBSelectArea( "GRUMEN" ); OrdSetFocus( "GRUPOMN1" )
DbSeek( aOrdenado[ww,8] )
cPuerto:= ALLTRIM( grumen->PRINTER32 )
cPuerto := aOrdenado[ww,7]
cPtoAuxi:= aOrdenado[ww,7]
nPrnn:= nPrnn + 1
cFileTmp:= "P"+ StrZero( HB_Random(99), 2 ) + ;
StrZero( HB_Random(99), 2 ) + ;
StrZero( HB_Random(998), 3 )
AADD( aFilesPrn, { cRutaExe + "Spool" + cFileTmp + ".PRN", ;
cPuerto, grumen->ACTIVAR, Left(grumen->NOMBRE,15) } )
SET PRINTER TO ( aFilesPrn[nPrnn,1] )
SET DEVICE TO PRINTER
@ pRow()+1, 00 SAY chr(27)+"!"+ chr(0) + "-------------------------------"
IF cMiniPrint == "E"
@ PRow()+1, 00 Say chr(27)+"!"+ Chr(48) + LEFT(aOrdenado[ww,9],7) + " MESA:"+ventas->MESA + chr(27)+ "!"+ chr(8)
ELSEIF cMiniPrint == "S" .OR. cMiniPrint == "O"
@ PRow()+1, 00 Say Chr(27)+"i" + Chr(1) + Chr(1) + "MESA: "+ventas->MESA + Chr(27)+"i" + Chr(0) + Chr(0)
ENDIF
@ pRow()+1, 00 SAY chr(27)+"!"+ chr(0) + "-------------------------------" + chr(27)+ "!"+ chr(8)
@ pRow()+1, 00 SAY "COMANDA: " + aOrdenado[ww,1] + " FOL: "+ AllTrim(Str(ventas->CUENTA,7)) // + " SILLA: " + aOrdenado[ww,8]
@ pRow()+1, 00 SAY "FECHA..: " + ventas->FECHA + " HORA : " + LEFT(TIME(),5)
@ pRow()+1, 00 SAY "CAJA...: " + cNumCajas + " TURNO: "+cNumTurno
@ pRow()+1, 00 SAY chr(27)+"!"+ chr(0) + "-------------------------------"
lCierra:= TRUE
lFinal := TRUE
IF !Empty( AllTrim(aOrdenado[ww,12]) )
@ PRow()+1,00 Say CHR(27)+CHR(33)+CHR(42)+ "SILLA: " + AllTrim( aOrdenado[ww,12] ) + chr(27)+ "!"+ chr(8)
ENDIF
ENDIF
DBSelectArea( "GRUMEN" ); OrdSetFocus( "GRUPOMN1" )
IF DbSeek( aOrdenado[ww,8] )
IF grumen->SEPCOMANDA == "S"
lCortalo:= TRUE
IF lSepara
@ pRow()+1, 00 SAY chr(27)+"!"+ chr(0) + "-------------------------------"
IF cMiniPrint == "E"
@ PRow()+1, 00 Say chr(27)+"!"+ chr(48)+ LEFT(aOrdenado[ww,9],7) + " MESA:"+ventas->MESA + chr(27)+ "!"+ chr(8)
IF !Empty( AllTrim( aOrdenado[ww,12] ) )
// @ PRow()+1,00 Say CHR(27)+CHR(33)+CHR(42)+ "SILLA: " + AllTrim( aOrdenado[ww,12] ) + + chr(27)+"!"+Chr(3)
ENDIF
ELSEIF cMiniPrint == "S"
@ PRow()+1, 00 Say chr(27)+"!"+ Chr(48) + "MESA: "+ventas->MESA + Chr(27)+"i" + Chr(0) + Chr(0)
ENDIF
@ pRow()+1, 00 SAY chr(27)+"!"+ chr(0) + "-------------------------------" + chr(27)+ "!"+ chr(8)
@ pRow()+1, 00 SAY "COMANDA: " + aOrdenado[ww,1] + " FOL: "+ AllTrim(Str(ventas->CUENTA,7)) // + " SILLA: " + aOrdenado[ww,8]
@ pRow()+1, 00 SAY "FECHA..: " + ventas->FECHA + " HORA : " + LEFT(TIME(),5)
@ pRow()+1, 00 SAY "CAJA...: " + cNumCajas + " TURNO: "+cNumTurno
@ pRow()+1, 00 SAY chr(27)+"!"+ chr(0) + "-------------------------------"
ENDIF
ENDIF
ENDIF
IF cComensal != aOrdenado[ww,12]
@ PRow()+1,00 Say CHR(27)+CHR(33)+CHR(42)+ "SILLA: " + AllTrim( aOrdenado[ww,12] ) + chr(27)+ "!"+ chr(8)
cComensal:= aOrdenado[ww,12]
ENDIF
IF aOrdenado[ww,17] == "S"
IF aOrdenado[ww,2] == 0.5
@ pRow()+1,00 say "MITAD"
ELSE
@ pRow()+1,00 say aOrdenado[ww,2] PICT '999.99'
ENDIF
ELSE
@ pRow()+1, 00 Say aOrdenado[ww,2] PICT '999.99'
ENDIF
IF aOrdenado[ww,17] == "S"
IF !EMPTY( aOrdenado[ww,5] )
@ pRow(), 07 say "-" + AllTrim(aOrdenado[ww,3]) + "/ " + AllTrim(aOrdenado[ww,5])
IF !EMPTY( aOrdenado[ww,6] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,6])
ENDIF
ELSE
@ pRow(),07 say "-" + AllTrim(aOrdenado[ww,3])
ENDIF
ELSE
IF cMiniPrint == "E"
@ pRow(), 07 say AllTrim(aOrdenado[ww,3])
IF !EMPTY( AllTrim(aOrdenado[ww,4]) )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,4])
ENDIF
IF !EMPTY( aOrdenado[ww,5] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,5])
ENDIF
IF !EMPTY( aOrdenado[ww,6] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,6])
ENDIF
ELSEIF cMiniPrint == "S"
@ pRow(),07 say AllTrim(aOrdenado[ww,3])
IF !EMPTY( aOrdenado[ww,5] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,5])
ENDIF
IF !EMPTY( aOrdenado[ww,6] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,6])
ENDIF
ELSEIF cMiniPrint == "O"
@ pRow(),07 say AllTrim(aOrdenado[ww,3])
IF !EMPTY( aOrdenado[ww,5] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,5])
ENDIF
IF !EMPTY( aOrdenado[ww,6] )
@ pRow()+1, 07 SAY AllTrim(aOrdenado[ww,6])
ENDIF
ENDIF
ENDIF
// @ pRow()+1, 08 SAY aOrdenado[ww,12] + " " + aOrdenado[ww,18] PICT '@!'
// @ pRow()+1, 08 SAY aOrdenado[ww,12] + " " + aOrdenado[ww,18] PICT '@!'
// IF !Empty( aOrdenado[ww,12] )
// @ pRow()+1, 08 SAY aOrdenado[ww,12] PICT '@!'
// ENDIF
IF lCortalo
IF ww != LEN( aOrdenado )
@ pRow()+2, 01 SAY "- - - - - - - - - - - - - - -"
IF ALLTRIM(aOrdenado[ww,19]) == "SI"
IF cMiniPrint == "E"
FOR nn:=1 TO 8
@ pRow()+1, 01 say ""
NEXT nn
@ PRow()+1,00 SAY CHR(27) + CHR(109)
ELSE
@ pRow()+1, 00 SAY CHR(27)+ CHR(100) + CHR(49) // "d" + "0,48"
ENDIF
ENDIF
ENDIF
lCortalo:= FALSE
lSepara := TRUE
lFinal := FALSE
ENDIF
NEXT
IF ALLTRIM(cCutter) == "SI"
IF cMiniPrint == "E"
FOR nn:=1 TO 8
@ pRow()+1, 01 say ""
NEXT nn
@ PRow()+1,00 SAY CHR(27) + CHR(109)
ELSE
@ pRow()+1, 00 SAY CHR(27)+ CHR(100) + CHR(49) // "d" + "0,48"
ENDIF
ELSE
FOR nn:=1 TO 6
@ pRow()+1, 01 say ""
NEXT nn
@ pRow()+1, 01 SAY "- - - - - - - - - - - - - - -"
ENDIF
SET PRINTER OFF
SET PRINTER TO
FOR ww:= 1 TO LEN( aFilesPrn )
IF aFilesPrn[ww,3] == "S"
PrintFileRaw( aFilesPrn[ww,2], ;
aFilesPrn[ww,1], ;
"MESA: " + ventas->MESA + " " + aOrdenado[ww,9] + ;
aFilesPrn[ww,4] )
ENDIF
NEXT
SET DEVICE TO SCREEN
SET CONSOLE ON
oWait:Close()
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 16 guests