Esto pasando un programa de clipper a xHarbour + fw y me toca ahora la parte de la impresora.
En el programa de clipper imprimía todo con ?, porque al ser una impresora de tikets no hay tamaño de página. Y _ de tipo de letra y apertura del cajón de monedas los hacía con secuencias de escape.
¿Qué debo hacer ahora para imprimir?
La impresora es una Epson TM-60.
Impresora de Tikets
Espero que esto te ayude
oRep:=TdosPrg():New(cCmd)
//Especiales
oRep:Say(00,00,CHR(27)+"@") // INDICA QUE SE INICIA CONFIGURACION
oRep:Say(00,00,CHR(27)+"t"+CHR(0))
oRep:Say(00,00,CHR(27)+"c0"+CHR(2)) // ACTIVA RECEIVE COMO HOJA(TICKET)
oRep:Say(00,00,CHR(27)+"z"+CHR(0))
//----------------
If !(oDbfTick)->Ignora1
n++
cCmd:=&(oDbfTick)->cTit1
oRep:Say(n,00,&cCmd)
EndIf
If !(oDbfTick)->Ignora2
n++
cCmd:=&(oDbfTick)->cTit2
oRep:Say(n,00,&cCmd)
EndIf
If !(oDbfTick)->Ignora3
n++
cCmd:=&(oDbfTick)->cTit3
oRep:Say(n,00,&cCmd)
EndIf
If !(oDbfTick)->Ignora4
n++
cCmd:=&(oDbfTick)->cTit4
oRep:Say(n,00,&cCmd)
EndIf
n+=2
oRep:Say(n,00,"TRANSACCION ANULADA POR EL OPERADOR")
n:=0
n++
cCmd:=Fechas(Date())+" "+Time()+" "+Str(nTienda)+" "
oRep:Say(n,00,cCmd)
n++
oRep:Say(00,00,Chr(27) + "d") //+ Chr(13)) // estas lineas
oRep:Say(00,00,Chr(27) + "i") //+ Chr(13)) // cortan el papel
oRep:=TdosPrg():New(cCmd)
//Especiales
oRep:Say(00,00,CHR(27)+"@") // INDICA QUE SE INICIA CONFIGURACION
oRep:Say(00,00,CHR(27)+"t"+CHR(0))
oRep:Say(00,00,CHR(27)+"c0"+CHR(2)) // ACTIVA RECEIVE COMO HOJA(TICKET)
oRep:Say(00,00,CHR(27)+"z"+CHR(0))
//----------------
If !(oDbfTick)->Ignora1
n++
cCmd:=&(oDbfTick)->cTit1
oRep:Say(n,00,&cCmd)
EndIf
If !(oDbfTick)->Ignora2
n++
cCmd:=&(oDbfTick)->cTit2
oRep:Say(n,00,&cCmd)
EndIf
If !(oDbfTick)->Ignora3
n++
cCmd:=&(oDbfTick)->cTit3
oRep:Say(n,00,&cCmd)
EndIf
If !(oDbfTick)->Ignora4
n++
cCmd:=&(oDbfTick)->cTit4
oRep:Say(n,00,&cCmd)
EndIf
n+=2
oRep:Say(n,00,"TRANSACCION ANULADA POR EL OPERADOR")
n:=0
n++
cCmd:=Fechas(Date())+" "+Time()+" "+Str(nTienda)+" "
oRep:Say(n,00,cCmd)
n++
oRep:Say(00,00,Chr(27) + "d") //+ Chr(13)) // estas lineas
oRep:Say(00,00,Chr(27) + "i") //+ Chr(13)) // cortan el papel
He podido ya imprimir sin usar tDosPrint.
Pero ahora no se como hacer para abrir el cajon. Lo que hago es mandar la instrucción como sigue:
//Apertura del cajon de monedas
function AbreCajon()
local oPrn
local oFont1
local cInstruccion := Chr(27)+Chr(112)+Chr(000)+Chr(060)+Chr(240)
PRINT oPrn NAME "Abre_Cajon"
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0, -10 OF oPrn
if empty( oPrn:hDC )
msgstop( "No hay impresora preparada" )
else
PAGE
oPrn:CmSay(0,0,cInstruccion,oFont1)
ENDPAGE
endif
ENDPRINT // Apaga la impresora
oFont1:end()
return NIL
Pero lo único que consigo es imprimir unos símbolos extraños en el papel.
Ruego sus sugerencias.
Pero ahora no se como hacer para abrir el cajon. Lo que hago es mandar la instrucción como sigue:
//Apertura del cajon de monedas
function AbreCajon()
local oPrn
local oFont1
local cInstruccion := Chr(27)+Chr(112)+Chr(000)+Chr(060)+Chr(240)
PRINT oPrn NAME "Abre_Cajon"
DEFINE FONT oFont1 NAME "ARIAL" SIZE 0, -10 OF oPrn
if empty( oPrn:hDC )
msgstop( "No hay impresora preparada" )
else
PAGE
oPrn:CmSay(0,0,cInstruccion,oFont1)
ENDPAGE
endif
ENDPRINT // Apaga la impresora
oFont1:end()
return NIL
Pero lo único que consigo es imprimir unos símbolos extraños en el papel.
Ruego sus sugerencias.