Emilio,
Para enviar (e ler) dados de uma impressora serial (COM1) é bem melhor
utilizar a HBCOMM.LIB no lugar de FOpen()/FWrite()/FRead()/FClose.
Verifique a HBCOMM.LIB, voce ira ter mais controle sobre a comunicação
com a Impressora.
Atenciosamente,
Marcelo Coelho Silva
Brasil.
Em 19/04/2011 04:51, Emilio Gil escreveu:
> Hola:
>
> Yo mismo me contesto, he tenido muchas dificultades para
> poder gestionar una impresora térmica Epson de tickets, que
> dicho sea de paso, la mayoría de estas impresoras o son
> Epson o emulan a las Epson, ahora que lo he resuelto dejo
> aqui la solución para quien pudiera necesitarla:
>
> hFile := FOpen('COM1',1)
>
> FWrite(hFile, Num2Esc("27 77 1")) // letra pequeña
>
>
> FWrite(hFile, ::oEmpresa:Nombre + CRLF)
> FWrite(hFile, ::oEmpresa:Domicilio +CRLF)
> FWrite(hFile, ::oEmpresa:Poblacion + " . " +
> ::oEmpresa:CodigoPostal + CRLF)
>
> FWrite(hFile, Num2Esc("27 100 04")) //lanza el papel 4
> lineas antes de cortar
> FWrite(hFile, Num2Esc("29 86 49")) //corte de papel
> FWrite(hFile, Num2Esc("27 112 0 10 10")) //apertura de
> cajón
>
> FClose(hFile)
>
> La función Num2Esc() la dejo en este foro un compañero
> y transforma una secuencia de codigos decimales en los
> códigos ESC/POS que necesita la impresora, a continuación
> la pongo también
>
> FUNCTION Num2Esc( cCad )
>
> LOCAL nPos := 1
> LOCAL cSal := ""
>
> cCad += " "
>
> WHILE nPos > 0
>
> nPos := AT( " ", cCad )
>
> IF Val( SubStr( cCad, 1, nPos - 1 ) ) != 0
> cSal += Chr( Val( SubStr( cCad, 1, nPos - 1 ) ) )
> ELSE
> cSal += SubStr( cCad, 1, nPos - 1 )
> END IF
>
> cCad := SubStr( cCad, nPos + 1 )
>
> END DO
>
> IF Len( cCad ) > 0 .AND. Empty( cSal )
> IF Val( cCad ) != 0
> cSal := Chr( Val( cCad ) )
> ELSE
> cSal := cCad
> ENDIF
>
> END IF
>
> RETURN cSal
>
> Y para finalizar dejo enlace a un archivo pdf con los
> códigos de funcionamiento de las impresoras térmicas
> EPSON
>
>
http://www.birch.com.tw/newpage/templat ... gramManual .pdf
>
> Saludos a todos y gracias.
>
> Emilio Gil.
>