Comunidad Foro Libertya
Bienvenido, Invitado
Nombre de Usuario Contraseña: Recordarme

Clases que usan el puerto en serie (contr. fisc)
(1 viendo) (1) Invitado
  • Página:
  • 1

TEMA: Clases que usan el puerto en serie (contr. fisc)

Clases que usan el puerto en serie (contr. fisc) hace 4 años, 9 meses #746

  • javAd
  • DESCONECTADO
  • Colaborador Premium
  • Cognitiva Consultores
  • Temas: 347
Buenas. Por lo que vi libertya no soporta actualmente controladores Epson y en otro thread uno de ustedes sugirió que para implementar el soporte uno tendría que mirar un poco el paquete org.openXpertya.print.fiscal.hasar y asi basarse en la forma en que esta implementado para controladores Hasar. Bueno, el tema es que llegue a a la interface org.openXpertya.print.fiscal.comm.FiscalComm (que si no me falla la intuición es la que define los métodos para comunicación "en bruto" con el controlador) y buscando sus implemetaciones solo encontré SpoolerTCPComm (via AbstractFiscalComm). Ok, pero si no me equivoco esto estaría enviando los "comandos" al controlador via tcp a alguna forma de spooler, pero en ningún caso sobre la linea serial (lo cual tengo entendido es bastante común); asi que mi pregutna es en que clases (o paquetes), si es que existen, se da la comunicación en "crudo" sobre la linea serial?
El tema es un poco "curiosidad" y otro poco porque en un futuro tal vez sea necesario para mi utilización de libertya implementar (ok, por lo menos intentar) el soporte para controladores Epson (de más esta decir que si lo hiciese, lo daría libremente a la libertya, un poco por respeto a la filosofía y otro poco por cuestiones obvias de calidad de software)
Javier
Equipo de Desarrollo Cognitiva: www.cognitivaconsultores.com

Re:Clases que usan el puerto en serie (contr. fisc) hace 4 años, 9 meses #754

  • antoniocal
  • DESCONECTADO
  • Administrador
  • Temas: 459
Javier,
No encontraste las clases de manejo del puerto serie porque no existen. El mecanismo de "dialogo" con la impresora Hasar es a través del programa wspooler de hasar (tambien existe el spooler para DOS y para Linux / UNIX y funcionan todos de la misma manera. La gente de Hasar se toma las cosas en serio) que se encarga de la comunicacion serial y provee una interfaz TCP para enviar los comandos (ademas de una interfaz por archivos y por comandos).
Esta es la principal causa por la cual Libertya solo maneja impresoras Hasar: ya esta la mitad del trabajo hecho.
Este esquema además, permite que la impresora este conectada físicamente en cualquier lugar (no solo en el equipo donde está el Cliente java) y permite una gran flexibilidad.
La gente de Hasar ademas, provee el codigo fuente de dichos utilitarios (ya no recuerdo en que licencia, pero creería que alguna openSource) por lo que tal vez sea posible adaptarlos a las impresoras Epson. Si tu curiosidad y necesidades se alinean y si tenés los conocimientos para hacer esta modificación, estaremos encantados en darte una mano en lo que podamos para que puedas armar el driver para Epson.

Saludos
Antonio.

Re:Clases que usan el puerto en serie (contr. fisc) hace 4 años, 9 meses #766

  • javAd
  • DESCONECTADO
  • Colaborador Premium
  • Cognitiva Consultores
  • Temas: 347
Y Epson no tiene algo parecido? Bueno, si me pasas el link de descarga (o alguna otra forma de obtenerlo) de los fuentes de wspooler los miro un poco y veo si se puede adaptar (si no, siempre algo se puede aprender). Yo de hasar tengo actualmente los controles activeX y en zip nombrado "Drivers y manuales ..." aparece el wspooler (junto con otros), pero solo los binarios y algunos archivos headers de C.
Para probar tengo actualmente un "emulador" de controladores fiscales (tanto de hasar como de epson), www.impresoras-fiscales.com.ar/emulador.htm , aunque solo corre bajo Windows, es cerrado y no se que tan bien los simulará (ya que no proviene ni de epson ni de hasar). No se si habrá otras opciones de emulación disponibles.
Igual, me da la sensación que lo que debería llevar más trabajo es interiorizarse en los comandos internos de los distintos modelos de Epson, los manuales a primera vista parecen bastante "gorditos" (aunque me da la sensación que deben tener un "filosía" similar a los de hasar).
Javier
Equipo de Desarrollo Cognitiva: www.cognitivaconsultores.com

Re:Clases que usan el puerto en serie (contr. fisc) hace 4 años, 9 meses #781

  • antoniocal
  • DESCONECTADO
  • Administrador
  • Temas: 459
Hasta donde se (pero hace varios años de esto) no existe algo similar en Epson, pero puede ser que ahora lo tengan (en su momento, solo había un .bat que tomabaun archivo y lo pasaba a la impresora, pero no era multiplataforma y nada amigable)

Podes trabajar con el wspooler (para win) o el spooler para linux.
Tenes que abrir (dentro del ZIP) /drivers/linux/linux.tar y adentro del tar -> /spooler/tcpip
Para win, dentro de /drivers/win32 hay un archivo winfis32.bas
No se si con todo ésto alcanza o faltan alguna librerias.

Ademas, adjunto al post un zip que me enviaron hace algunos años (por lo que puede ser que sea una versión vieja .. es del 2005) de los fuentes linux


Por favor, comentanos de tus avances al respecto. Si conseguis que se conecte con las impresoras epson sería muy bueno para la gente que prefiere esa marca.

Suerte!
Antonio.

Archivo Adjunto:

Nombre del Archivo: Fuentes_Linux.zip
Tamaño del Archivo: 107282
Última Edición: hace 4 años, 9 meses Por antoniocal.

Re:Clases que usan el puerto en serie (contr. fisc) hace 4 años, 9 meses #782

  • antoniocal
  • DESCONECTADO
  • Administrador
  • Temas: 459
transribo el "acuerdo" de Hasar que fija las limitaciones y autorizaciones sobre el uso de los fuentes del post anterior:

DISCLAIMER
IMPORTANTE
LEA ESTE ACUERDO DETENIDAMENTE ANTES DE ABRIR EL ARCHIVO ZIPEADO QUE
CONTIENE LOS FUENTES SUMINISTRADOS POR CIA. HASAR SAIC.
Este Acuerdo de Uso (ACUERDO) de Cía. HASAR saic (HASAR) es un convenio legal entre
Usted, el Usuario (USUARIO), -sea un individuo o una sola entidad dedicada al desarrollo de
software- y HASAR en el que se especifican los términos y condiciones según los cuales se le
permite al USUARIO utilizar el paquete de archivos fuentes (SOFTWARE) incluido con este
ACUERDO; paquete que permite la generación de software a utilizar como driver, librería y/o
utilitario, y al solo efecto de permitir el diálogo entre un software para puntos de venta, de-
sarrollado por el USUARIO, y una impresora fiscal homologada por HASAR.
Por el simple hecho de abrir el archivo zipeado que contiene el SOFTWARE, el USUARIO in-
dica que comprende las condiciones contenidas en este ACUERDO y que acepta estar obli-
gado a ellas.
Si no está de acuerdo con las condiciones de este ACUERDO, no está autorizado a abrir el
archivo zipeado, ni a utilizar el SOFTWARE contenido en él.
Este ACUERDO no constituye una venta de SOFTWARE; es decir, el USUARIO no es el pro-
pietario del SOFTWARE por el hecho de haberlo utilizado. HASAR retiene el derecho de pro-
piedad sobre el SOFTWARE y todas las copias del mismo, y se reserva todos los derechos
no específicamente concedidos bajo los términos de este ACUERDO.
Este ACUERDO constituye el convenio completo y exclusivo, oral o escrito, entre HASAR y
cualquiera de sus empresas asociadas con relación al Software.
1. CONCESIONES DEL ACUERDO
Este ACUERDO le autoriza:
a) A configurar el SOFTWARE adaptándolo para uso propio agregando o quitando fuentes,
modificar los fuentes recibidos o crear trabajos basados en el uso de este SOFTWARE o
de alguna parte del mismo.
2. LIMITACIONES DEL ACUERDO
a) HASAR no ofrece ninguna garantía, expresa o implícita. El SOFTWARE se suministra
«TAL Y COMO ESTÁ», sin garantías de ningún tipo, y HASAR, sus empleados, distribui-
dores, y agentes, específicamente deniegan garantías de toda y cualquier índole, expre-
sas o implícitas.

Re:Clases que usan el puerto en serie (contr. fisc) hace 4 años, 9 meses #791

  • javAd
  • DESCONECTADO
  • Colaborador Premium
  • Cognitiva Consultores
  • Temas: 347
Bueno, un poco lo mire. Hace solicite a hasar de las Clases Fiscales Multiplaforma (antes me habian mandado la versión en ActiveX) con la esperanza de que me mandaran las fuentes del spooler actual; pero no... Esta libreria C++ esta hecha para comunicarse directamente al controlador via el puerto serial o al spooler via tcp (la unica clase que tratan con TCP/IP son unas llamadas SocketTCP y SocketUDP; tiene metodos simples como enviarByte(), recibirByte pero no mucho más); basicamente tienen toda la lógica de genración de comandos "crudos" (orden de campos, chequeos de errores) que despues lo envian por RS232, TCP o UDP. Esto me hace pensar que el spooler no tienen mocho trabajo más que lo que viene por TCP/IP enviarlo a un puertdo serial y viceversa (ok, esto si puede ser bastante trabajo si se lo quiere hacer multiplataforma).
De cualquier manera, si no hay un spooler de epson (o si genera algun tipo de problemas de licencias ) me da la sensación que esta "mitad" del problema se podria resolver relativamente facil. Como no estoy como para programar en C o C++ y andar haciendo malabares con #endif y librerias que no conozco para poder acceder a los puertos seriales (alguien en algún momento lo va a tener que hacer) intente simplificar y ver si se podia desde Java. Encontre dos librerias, una de Sun que no esta en JDK (creo...) y que me parece que no anda bajo Windows (y tampoco mire mucho la licencia) y esta code.google.com/p/giovynetserialport/ , que anda bajo Windwos y Linux y esta bajo GPL. A partir de esta se podria hacer un spoolercito más o menos rápido (falta como manejar TCP/IP, pero eso en Java debe ser incluso más fácil; he visto servers webs de un solo archivo java!).
La otra parte es viene por el lado de manejar la idiosincracia de Epson y entrar en los detalles del protocolo y formato de los paquetes. En este sentido , por lo que vi, tiene buena documentación (y el protocolo y el formato general de los comandos parece bastante simples byteInicio + byteSequencia + byteComando + (byteLimitadorDeCampo + bytesDeValor)* + byteFin + 4byteCodigoBCC ) asi que lei un poco y juntando un poco todo lo anterior hice este programita
:pinch: Advertencia: Spoiler!

:pinch: Advertencia: Spoiler!

Arranco siendo un prueba de concepto, pero me termino gustando (mas que nada la clase ComandoEpson que un posible uso real con un par de mejoras).
Que hace: basicamente envia por el port serial que recibe como parametro (el nombre; bajo Windwos tomas COMx, bajo linux, no me fije, pero casi seguro algo de la forma /dev/algox ) el comando "Solicitud de Estado" (pagina 42 del manual MANPRG23.pdf que se puede bajar desde Epson) con sus 4 variantes:
N: Información normal o compatible con TM-300AF . Homologado por GR22 AFIP-DGI (voy a tener que buscar en diccionario "homologado")
P: Información de las caracterizaticas de controlador
C: Información del contribuyente (CUIT, punto de venta, sit. iva, etc)
A: Información sobre los contadores de documentos fiscales y no fiscales
D: Información sobre el documento que se esta emitiendo
(OJO, lo que retorna el controlador no lo "parsea" simlemente lo manda a la consola, asi que si lo corren desde una terminal puede traer problemas ya que muchos datos no son "ascii", muchos son binarios puros; redirección la salida a un arhcivo o corranlo dese eclipse que trae su propia cosola).

Bueno, más allá de si tiene utilidad por si mismo (puede servir para testear si un controlador fiscal real al menos esta respondiendo y ver cierta información importante) lo interesante es que lo probé contra un emulador de controladores fiscales (que de paso emula un puerto virtual; por eso en el codigo se ve el nombre "COM4" y no algo mas natural como COM1) lo recibia perfectamente y reconocia los comandos validos (hace un chequeo bastante correcto al parecer; en varias pruebas me detectaba por ej, comandos desconocidos de manera correcta, ed. retornando un error; y tambien chequeba el codigo de comprobación BCC) y retornaba al parecer, lo que tenia que retorna (al menos no le erraba en el numero de secuenca ni el BCC de la respuesta).

Pongo el último spoiler con los un ejemplo de salida (enviando los 4 comando que hablo mas arriba)
:pinch: Advertencia: Spoiler!

(notese que hay caracters no ascii; es un copy and past crudo)

Bueno, un comando ya esta implementado... faltan los 99 restantes jajaj

P.D: el que lo quiera probar compilarlo y correrlo miren en la página de la librería www.giovynet.com/serialport.html que explica como hacerlo bajo eclipse como si el que lee fuera un nene de dos años (lo cual me sirvio muchisimo a ya que mi destreza bajo eclipse es casi nula jaja). Como emulador use el que esta en el post de más arriba; pero estaria bueno sacudirle a un controlador epson real (algún valiente?)
Javier
Equipo de Desarrollo Cognitiva: www.cognitivaconsultores.com
Última Edición: hace 4 años, 9 meses Por javAd. Razón: link a la pagina de la librería
  • Página:
  • 1
Moderadores: jorge, mmaupr, fcristina
Página generada en: 0.15 segundos

Escríbanos a libertya.gestion@gmail.com