Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2013
erickperez6 erickperez6 is offline
Miembro
 
Registrado: may 2003
Posts: 152
Poder: 21
erickperez6 Va por buen camino
Exclamation Enviar secuencia de bits a puerto serial a printer fiscal

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:

Código Delphi [-]
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.
Código:
[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:

Código Delphi [-]
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
Responder Con Cita
  #2  
Antiguo 17-06-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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 .
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 07-08-2013
almazar almazar is offline
Registrado
NULL
 
Registrado: ago 2013
Posts: 1
Poder: 0
almazar Va por buen camino
Enviar secuencia de bits a puerto serial a printer fiscal

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.
Responder Con Cita
  #4  
Antiguo 07-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda en impresion, puerto usb con impresora fiscal JohanRS Impresión 10 05-08-2008 17:22:13
Puerto Serial Bunbury_2099 Varios 2 16-05-2008 01:57:00
¿Como enviar un mensaje en ASCII desde un edit a una máquina por puerto serial? The_Animal Varios 5 15-11-2007 17:31:05
Puerto serial CLX bismarck_sierra Lazarus, FreePascal, Kylix, etc. 0 06-07-2004 21:55:22
Puerto serial fled Varios 2 28-04-2004 22:27:47


La franja horaria es GMT +2. Ahora son las 17:02:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi