PDA

Ver la Versión Completa : Enviar secuencia de bits a puerto serial a printer fiscal


erickperez6
16-06-2013, 20:36:33
Saludos,

Un pequeño preambulo antes de plantear el problema, estoy trabajando con printer fiscal EPSON TM-U220, utilizo un driver llamado EpsonFiscalProtocol que me permite la comunicacion con el printer, la verdad es que ya he logrado hacer casi todo, la tarea ha sido muy dificil teniendo en cuenta una documentacion completa pero poco practica sin ningunos ejemplos, y los pocos ejemplos que he encontrado por otra via son demasiados simplistas.

En Fin, entiendo que no en todos los paises podemos utilizar los mismos recursos (dll, ocx) ya que muchas veces estos son creados especificamente para el comportamiento de la placa configurada para el pais en cuestion. En mi caso, Republica Dominicana, aunque creo que algunos aspectos de los recursos proporcionados por Epson son genericos.

Mi problema es el siguiente para quien pueda ayudarme:

Para abrir un comprobante fiscal nuevo ejecuto el siguiente comando:

addfield(Chr(10) + Chr(1)); // apertura comprobante
addfield(Chr(0) + Chr(0)); // extension del comando de apertura

addfield(''); // logo
addfield(''); // densidad impresion
addfield('0001'); // numero sucursal
addfield('0001'); // numero caja
addfield(''); // no. comprobante fiscal
addfield('jose perez'); // nombre cliente
addfield(''); // no comprobante referencia

sendmessage; // envia todo al printer fiscal,

El ejemplo expuesto funciona perfectamente, imediatamente ejecuto el envio, se imprime satisfactoriamente el encabezado del comprobante o factura. Mi problema esta con la extension del comando de apertura, con el cual puedo variar el comportamiento del comprobante segun mis necesidades, segun la documentacion me dice que modificando el bit 10 de la extension puedo habilitar un funcionamiento que necesito, lo cual no se como debo debo hacerlo.

[Extensión] Bit 0-2 ‘000’ – Factura a consumidor final.
‘001’ – Factura con derecho a crédito fiscal.
‘010’ – Nota de crédito a consumidor final.
‘011’ – Nota de crédito con derecho a crédito fiscal.
‘100’ – Factura a consumidor final con exoneración de ITBIS.
‘101’ – Factura con derecho a crédito fiscal con exoneración de
ITBIS.
‘110’ – Reservado.
‘111’ – Reservado.
Bit 3 Reservado.
Bit 4-5 ‘00’ – Utilizar fuente predeterminada.
‘01’ – Utilizar fuente tipo A.
‘10’ – Utilizar fuente tipo B.
‘11’ – Reservado.
Bit 6-8 ‘000’ – No realizar copias.
‘001’ – Realizar una copia.
‘010’ – Realizar dos copias.
‘011’ – Realizar tres copias.
‘100’ – Realizar cuatro copias.
‘101’ – Realizar cinco copias.
‘110’ – Realizar seis copias.
‘111’ – Realizar siete copias.
Bit 9 Reservado.
Bit 10 ‘0’ – Utilizar %Ley predeterminado.
‘1’ – No utilizar %Ley.
Bit 11-15 Reservados.


Los primeros bit [0-2] funcionan correctamente, por ejemplo: Chr(0) + Chr(0) = 000 o Chr(0) + Chr(1) = 001 o Chr(0) + Chr(2) = 010... hasta llegar al Chr(0) + Chr(7) = 111, segun la documentacion los comando de extension siempre deben comenzar en cero y los reservados siempre son cero tambien, como se omiten los valores para los bits siguientes, pues ellos toman sus valores predeterminados que es Cero. Para llegar al bit 10, no se me ocurre como, pense que era valores por posicionamiento:

a := chr(0) + // inicializando en cero el comando de extension
chr(0) + // los primeros bit [0-2]
chr(0) + // el bit 3 reservado, por lo cual se iguala a cero
chr(0) + // Bit 4-5 fuentes
chr(0) + // bit 6-8 copias
chr(0) + // bit 9 reservado
chr(1); // bit 10 a donde quiero llegar, lo igualo a 1


Obviamente no es la forma de hacerlo, porque esto no hace nada, se produce un error de comando de extension invalido, alguien tiene una idea, porque me siento perdido en el desierto :confused:

Ñuño Martínez
17-06-2013, 22:16:12
CHR genera un octeto (byte) no un bit, y tú necesitas acceder a los bits. Échale un vistazo a los operadores de bits: SHL, SHR, AND y OR .

almazar
07-08-2013, 20:44:48
Saludos Erick,

Deseo saber si lograste la respuesta a tu consulta.

Enviar secuencia de bits a puerto serial a printer fiscal
Pues tengo la misma inquietud y deseo saber quien pueda ayudarme.

Casimiro Notevi
07-08-2013, 21:20:20
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)