Comunidad de diseño web y desarrollo en internet online

Impresora matricial (ESC/POS) + AS3 + MDM Zinc 3.0

Citar            
MensajeEscrito el 09 Nov 2012 11:37 pm
Buenas tardes, una vez mas recurriendo a Cristalab :) Tengo unas dudas: En AS3 no existe alguna otra manera de imprimir solo texto plano? es decir, no quiero imprimir un MC, solo texto.

Me explico mejor: En un proyecto que estoy realizando con AS3 necesito imprimir utilizando una impresora matricial, por lo que tuve que recurrir a generar un .txt desde el SWF e imprimirlo mediante un archivo .bat, lo cual funciona perfectamente, el problema es que me gustaría poder cambiar la fuente (Draft mode) ya que con este método ocurre que la impresora decide que tipo de letra tendrá la página a imprimir por lo que en ocaciones la pagina sale descolocada.

Y otra duda, en caso de que la anterior fuese posible: Hay alguna manera de usar los comandos ESC/POS desde AS3 para forzar la utilización de una fuente especifica? o desde Zinc 3.0?

Muchas gracias y perdonen si lo que pido no corresponde a este foro.

Por Pressiale

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Nov 2012 12:09 am
Hola, mi nombre es Ricardo Martin Pizarro y espero que te sirva esta info.

A cualquier impresora matricial que reciba datos por el puerto RS232 de tipo DB9 la debes instalar en la PC sin driver alguno, solo la debes poner en GENERIC TEXT ONLY respetando los parametros de conexcion que utilizamos en la funcion de zinc que envia datos por el COMPORT. Yo he lidiado con estos temas y los he podido resolver sin inconvenientes. El largo del tickets dependera de la cantidad de texto y retornos de carros que incluyas. Tambien la recepcion de comandos ESC/POS depende de la impresora.

En mercadolibre consigues cables que adaptan el USB de una Notebook a salida de puerto com serialbus db9 rs232. (increible no!?)

Por ultimo aqui te dejo un ejemplo de una funcion que a mi me ha funcionado de 10.
Es una funcion de MDM Zinc que puedes utilizar creando una aplicacion en Adobe Flash.


function imprimirTicket(datos:String):void
{
mdm.COMPort.open(1, 9600, 8, "N", 1, "OFF");
mdm.COMPort.send(datos+"\n\n\n<<< NO ARROJAR EN LA VIA PUBLICA >>>\n\n\n\n\n\n\n\n\n\n\n\n\n");
mdm.COMPort.close();
}

Para probar la emision de datos si aun no conseguiste el cable o careces de puertos, puedes realizar las pruebas con el programa llamado Virtual Serial Port creando un PAIR que es un par de puertos virtualmente interconectados entre si. Si necesitas yo he creado una aplicacion para mi que recibe y muestra los datos enviados y recibidos por 2 puertos interconectados entre si. Es un exe que lo ejecuto 2 veces y lo conecto uno al puerto 1 y otro al puerto 2 y transfieren datos entre ellos.

Saludos y espero que te sirva! No hice un copy y paste, yo he utilizado todo esto y escasea esta info en la red. Toma las precauciones del caso porque no estoy seguro hasta que punto algunas impresoras fiscales es legal hacerlas funcionar de este modo y cuales no. mi correo es cutepizarroarrobahotmail.com :)

Por cutepizarro

95 de clabLevel

1 tutorial

Genero:Masculino  

Programador PHP-MYSQL-FLASH-ZINC

firefox
Citar            
MensajeEscrito el 25 Nov 2012 06:30 am
Hola Ricardo, muchas gracias por tomarte el tiempo de contestar. Realmente me parece bastante interesante que desde el propio Zinc se pueda acceder al puerto paralelo, y lo que planteas parece ser una solución mucho mas pulida a la que encontré: Resulta que opté por generar un archivo de texto plano (.txt) desde AS3, e imprimirlo directamente mediante un archivo .bat, además conseguí la manera de controlar el tipo de letra, tamaño, etc. Se que tal vez se trata de un método un tanto viejo, pero para el caso lo importante es que funcionó.
Cuando pueda intento seguir tu sugerencia para optimizar mi trabajo, aunque por ahora me va bien de la manera "arcaica" :P

Por si a alguien le resulte util, este es el contenido del archivo .bat

Código :

@ECHO OFF
rawprint "Generic / Text Only" "\027\120\048\x0D"
PRINT archivo.txt

rawprint es un ejecutable que descargué de esta página, en la cual se explica al detalle como utilizarlo, y sirve mas bien para enviar caracteres ESC/POS al puerto paralelo.

Y aquí una lista de códigos ESC/POS para Epson.

Por Pressiale

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 25 Nov 2012 03:43 pm
Me parece muy interesante tambien el modo en que estas resolviendo todo este asunto. Yo tambien tendre en cuenta la información que me brindas. Yo pienso que cada programador busca una solucion en funcion del problema o tipo de impresora, o sea que hay muchos factores en juego que pueden implicar una u otra forma de resolverlo.

Como todo avanza me parece que la alternativa del rawprint es una opcion valida que para que no te parezca tan arcaica, si fuese yo, trataria de llamarlo desde zinc y no desde un BAT

mdm.Process.setParams("-a", "parametrosparaelrawprint");//este usas para los parametros

var processID:Number = mdm.Process.create("My Title", 0, 0, 500, 600, "", "rawprint.exe", "C:\\windows", 3, 1);//con el ultimoparametro en 1 lo ocultas. esta funcion te devuelve el numero de id del proceso y lo puedes controlar con zinc.

Estoy haciendo DLL's y EXE's en DEV C++ para utilizarlas tambien desde cada aplicacion propia sin a los fines de dejar las aplicaciones un poco mas prolijas. Si te enteras de un DLL rawprint lo puedes llamar desde zinc por medio de este comando

var myDLL:mdm.DLL = new mdm.DLL("rawprint.dll")

Disculpame si quizas esta info no viene al caso pero es bueno que aportemos opciones para los que andan buscando alternativas. Saludos y suerte! :)

Por cutepizarro

95 de clabLevel

1 tutorial

Genero:Masculino  

Programador PHP-MYSQL-FLASH-ZINC

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.