impresion codigos de barra en zebra TLP2844
Publicado por Manuel (32 intervenciones) el 28/10/2011 22:50:35
Buenasss gente en esta oportunidad quiero dar un aporte al foro que a mi parecer es todo un suplicio
me encomendaron que realizara una aplicacion en ambiente web, que realize la tarea de imprimir codigos de barras para los articulos y los productos de las tiendas de la empresa donde laboro , en una impresora de impresion termica Zebra TLP2844 bueno hice un monton de pruebas desde impresion directa en modo imagen a la impresora o tambien en modo texto , tambien trate de hacer un applet de java para tal cometido y nada al final ya apunto de tirar la toalla llego a mi correo un manualito que cambiaria todo el esquema , en un principio trate de utilizar los comando propios de la impresora zebra
comando que se les llama ZPL , lamentablemente no pude imprimir con los susodichos comandos de la impresora asi que ,el manual , que habia llegado a mi correo era un manual de comando TPL , osea un manual de comandos globales capaz de imprimir para una serie de impresoras zebra asi que bueno si ya habia probado casi todo, hasta incluso tratar de aprender sobre el kernel para dominar la impresora por sistema operativo por que no probar este nuevo manual
a continuacion detallo la solucion para poder imprimir en esta versatil y a la vez majadera impresora :)
recibi ayuda de muchos foros y siempre de los sensatos consejos de mi jefe ,
por cierto antes es pertinente nombrar que utilizo Genexus x EVO 1 generando en java trabajando en ambiente web
EXPLICACION
1)Generar desde Genexus un archivo txt con los comandos de la impresora necesarios para la impresion
2)Crear archivo bat (manualmente) para que permita imprimir este archivo de texto generado por genexu
3) Ejecutar este archivo bat desde Genexus para que pueda imprimirse el archivo que fue generado en el primer paso por genexus .
DESARROLLO
primer paso: los comando de la impresora zebra
les explicare de forma un tanto rapida como se usan los comandos TPL para impresion de estas impresoras(si desean el manual me escriben al correo :))
se tiene el siguiente ejemplo :
podemos digitarlo tal como lo vemos en la parte inferior
ejemplo de comandos para codigo de barras
N
A50,300,0,3,2,2,R,"Example6"
P1
N = es la parte con la que se inicia siempre un conjunto de comandos TPL
P1 = es la parte final con que se cierra un conjunto de comandos TPL y a la vez el numero de veces que quiero que se imprima (la impresora lee estos comandos o no se que hace pero la cuestion es que reconoce los comandos)
la parte del medio van asi: A50,300,0,3,2,2,R,"Example6"
A50, = pocicion primaria Y
300, = posicion con respecto a X
0, = no se que va aqui (leer manual)
3, = este creo que es tamaño
2, = que vaya en forma horizontal o vertical
2, = ................... ?
R, =...................?
"Example6" = Numeros o letras que quiero que se impriman(todo tiene que ser de tipo caracter)
bueno al final una vez digitado todo como en el ejemplo de codigo de barras de la parte de arriba , asi de esta forma
N
A50,300,0,3,2,2,R,"Example6"
P1
todo esto va en notepad lo guardo con el nombre de ........Archivo.TXT en la unidad C:\
EJECUCION DE ARCHIVO CON COMANDO TPL
Para la ejecucion deveremos tomar en cuenta algo importante este archivo se ejecuta desde consola de DOS (pantallita negra) y una vez ejecutado la orden de impresion este busca un puerto COM o un puerto LPT1 que son puertos de impresion , si en nuestro caso no contamos con puertos COM o LPT1 y tenemos conectado la impresora a un puerto USB entonces deveremos seguir lo que viene a continuacion ,las personas que tienen conectada la impresora a un puerto COM o LPT1 pueden pasar por alto esta configuracion de los puertos. caso contrario sigan leyendo
Manos a la obra, a configurar el puerto ,lo que haremos sera sencillo , decirle a la computadora que imprima por puerto LPT1 o COM pero con cable USB , Diablos como se hace eso ?, no desesperarse deben,primero, configuramos que por defecto me imprima la impresora Zebra,para ello me voy a panel de control ,impresoras y luego simplemente y escojo por defecto a la impresora zebra seguimos los siguientes pasos .
1.- Crear la impresora usb en entorno Windows (recordemos que para esto devemos tener conectada la impresora con puerto usb e instalada en modo usb , esto se hace cuando se instala el driver )
2.- Compartir la impresora usb con un nombre no mayor de 8 digitos (simplemente compartir la impresora)
3.- Capturar la impresora compartida: \\Nombre de la PC\Nombre de Impresora compartida, con el siguiente comando ( lo hacemos en la pantallita negra de DOS :) inicio,ejecutar,escribimos CMD )
NET USE LPT1: \\Nombre de la PC\Nombre de la Impresora compartida /persistent:yes
Ejemplo: nombre de la PC: almtie30
nombre de la impresora compartida: etiqueta
Comando: (tomar atencion importante en los espacion y las separaciones es importantisimo)
net use lpt1: \\almtie30\etiqueta /persistent:yes
La opcion /persistent, deriva la impresoras permanentemente, en caso de no usar esta opcion la derivacion se perdera al reiniciar el equipo
4.- Para desactivar la derivacion del puerto utilizar el comando:
NET USE LPT1: /delete
5.- Para ver todos los recursos compartidos, utilizar el comando:
NET USE
ok :)
con esto configuramos nuestra impresora para que imprima por un cable USB
una vez terminado esto ejecuto mi archivo.txt que me cree lineas arriba
para ello ingreso nuevamente a la pantallita negra DOS (inicio,ejecutar,escribimos CMD )
y digito los siguiente
C:\Type archivo.txt> prn
recordemos que mi archivo.txt donde estan mis comando de TPL se encuentra en la unidad C:\
inmediatamente si hasta este momento todo esta correcto no deveria haber ningun problema (confio que no) asi podremos observar que la impresion es un codigo de barras .
Muy bien , ya se sabe como se hace un archivo.txt con comando TPL y tambien como ejecutarlo via manual
CREACION DE ARCHIVO BAT
Lo que pasa es que deseo imprimir pero sin estar teniendo que escribir o estar teniendo que entrar a la pantallita negra , tonces la solucion es crearme un archivo bat que sea capaz de realizar la tarea de impresion con tan solo un click para ello haremos lo siguiente
abrimos un block de notas y en el escribiremos lo siguiente
print c:\archivo.txt
y lo guardamos con extencion .BAT , osea que al momento de guardar el archivo lo hacemos poniendo un nombre y su extecion BAT
Ejemplo
Impresion.BAT
listo lo guardamos de preferencia en la unidad donde se encuentra mi archivo.txt , terminado esto me dare cuenta que el icono ya no tiene la forma de una hoja en blanco si no que tiene la forma de un tuerquita :) ese sera mi archivo que ejecutara mi impresion :)
GENEXUS X EVO 1 generando en Java
Lo que devere hacer en genexus sera crear un archivo txt , osea generar un archivo txt desde genexus y que este archivo txt contenga comando TPL que permitan imprimir, simple verdad , bueno entonces como genero un txt desde genexus?????
Facil :)
este codigo ira en el EVents de un webpanels
Event 'imprimir' // todo esto va dentro de un boton
&i = DFWOpen("c:\comandoszebraT.txt", ",", ' ') // direccionamos la unidad en la que queremos que se cree mi archivo txt y le damos el nombre con el que quiero que se
&i = dfwptxt(' ') // linea en blanco //cree
&i = dfwnext( ) // salto de linea
&i = dfwptxt(' ') // linea en blanco
&i = dfwnext( ) //salto de linea
&i = dfwptxt('N') // comienzo de comando zebra
&i = dfwnext( )
&i = dfwptxt( ' A50,300,0,3,2,2,R, "Example6" ' )
&i = dfwnext( )
&i = dfwptxt('P1') // fin de comandos zebra
&i = dfwnext( )
&i = dfwclose() // fin de creacion de txt
DO 'IMPRI' // llamo a un evento sub que me ejecuta el archivo bat para la impresion
EndEvent
Sub 'impri'
&M = shell('C:\Printexe.bat',1) // llamo al archivo bat que me ejcuta mi impresion :)
load
EndSub
hasta este punto no deeria tener problemas jejjejejejeje que tal espero que todo este yendo bien hasta ahora
INSERTANDO VARIABLES A MI CODIGO DE CREACION DE ARCHIVO TXT
Bien hasta ahora solo he impreso "Example6" en codigo de barras verdad (si leiste el manual podras hacer muchas mas cosas :)) pero no ideal es imprimir lo que tu quieras
dentro de ese espacio que esta reservado para el texto .
Pues bien manos a la obra , recordemos que lo que vaya dentro de ese espacio entre comillas que tenemos en los comandos TPL es de tipo caracter , asi que cualquier cosa que quiera insertar alli tendra que ser de tipo caracter , si quiero poner un numero tendre que convertirlo a caracter.
pero .................. no es asi de facil colocar mi variable y punto ..... yo tambien me desilcione en primera instancia sin embargo me faltaba algo ,que
la variable que deseaba que vaya en ese espacio este contenida en otra variable de tipo caracter y de tamaño 4 , por uqe???? , la verdad hasta ahora no se la razon pero de que funciono funciono aqui va el ejemplo
tengo la variable &nombre que es de tipo caracter de 30
lo que devere hacer para ingresarlo a mi codigo sera
crear una variable &nom de tipo caracter de 4 y almacenar la variable &nombre en &nom de esta manera
&nom = substr(&nombre,1,30)
listo eso es todo si quisiera rebajar el tamaño de letra simplemente bajo el numero de letras recorridas de 30 a 25 o a10 no se lo que les de la gana je.
de esa manera esto quedaria asi:
Event 'imprimir' // todo esto va dentro de un boton
&nom = substr(&nombre,1,30) // insertando variable de 30 en una de 4 jajajajaj increible , si alguien me explica por que pasa esto gracias¡¡¡¡
&i = DFWOpen("c:\comandoszebraT.txt", ",", ' ') // direccionamos la unidad en la que queremos que se cree mi archivo txt y le damos el nombre con el que quiero que se
&i = dfwptxt(' ') // linea en blanco //cree
&i = dfwnext( ) // salto de linea
&i = dfwptxt(' ') // linea en blanco
&i = dfwnext( ) //salto de linea
&i = dfwptxt('N') // comienzo de comando zebra
&i = dfwnext( )
&i = dfwptxt( ' A50,300,0,3,2,2,R, " ' + &NOM + ' " ' ) // tomar detalle de como ingresa la variable al espacio las comillas y el signo mas y todo eso
&i = dfwnext( )
&i = dfwptxt('P1') // fin de comandos zebra
&i = dfwnext( )
&i = dfwclose() // fin de creacion de txt
DO 'IMPRI' // llamo a un evento sub que me ejecuta el archivo bat para la impresion
EndEvent
que tal les gusto? , bueno espero ayudarles mucho en este tema a mi me tuvo mucho tiempo cabezon ni se imaginan lo que pense hacer para que me funcionara jajjaj naa tampoco tampoco jajajaja
claro esta que este es un ejemplo chiquito pero resuelve muchas dudas porfa mantengamos el foro con mas soluciones no es que sea el pata que creo la pagina nada que ver, lo que pasa es que la pagina me saco de muchos lios, felizmente en el trabajo nos dejan consultar esta pagina, me enseño muchas cosas espero que contribuyan para asi poder aprender mas , cuidense y un abrazo si no entendieron me escriben . tratare de responderles .
me encomendaron que realizara una aplicacion en ambiente web, que realize la tarea de imprimir codigos de barras para los articulos y los productos de las tiendas de la empresa donde laboro , en una impresora de impresion termica Zebra TLP2844 bueno hice un monton de pruebas desde impresion directa en modo imagen a la impresora o tambien en modo texto , tambien trate de hacer un applet de java para tal cometido y nada al final ya apunto de tirar la toalla llego a mi correo un manualito que cambiaria todo el esquema , en un principio trate de utilizar los comando propios de la impresora zebra
comando que se les llama ZPL , lamentablemente no pude imprimir con los susodichos comandos de la impresora asi que ,el manual , que habia llegado a mi correo era un manual de comando TPL , osea un manual de comandos globales capaz de imprimir para una serie de impresoras zebra asi que bueno si ya habia probado casi todo, hasta incluso tratar de aprender sobre el kernel para dominar la impresora por sistema operativo por que no probar este nuevo manual
a continuacion detallo la solucion para poder imprimir en esta versatil y a la vez majadera impresora :)
recibi ayuda de muchos foros y siempre de los sensatos consejos de mi jefe ,
por cierto antes es pertinente nombrar que utilizo Genexus x EVO 1 generando en java trabajando en ambiente web
EXPLICACION
1)Generar desde Genexus un archivo txt con los comandos de la impresora necesarios para la impresion
2)Crear archivo bat (manualmente) para que permita imprimir este archivo de texto generado por genexu
3) Ejecutar este archivo bat desde Genexus para que pueda imprimirse el archivo que fue generado en el primer paso por genexus .
DESARROLLO
primer paso: los comando de la impresora zebra
les explicare de forma un tanto rapida como se usan los comandos TPL para impresion de estas impresoras(si desean el manual me escriben al correo :))
se tiene el siguiente ejemplo :
podemos digitarlo tal como lo vemos en la parte inferior
ejemplo de comandos para codigo de barras
N
A50,300,0,3,2,2,R,"Example6"
P1
N = es la parte con la que se inicia siempre un conjunto de comandos TPL
P1 = es la parte final con que se cierra un conjunto de comandos TPL y a la vez el numero de veces que quiero que se imprima (la impresora lee estos comandos o no se que hace pero la cuestion es que reconoce los comandos)
la parte del medio van asi: A50,300,0,3,2,2,R,"Example6"
A50, = pocicion primaria Y
300, = posicion con respecto a X
0, = no se que va aqui (leer manual)
3, = este creo que es tamaño
2, = que vaya en forma horizontal o vertical
2, = ................... ?
R, =...................?
"Example6" = Numeros o letras que quiero que se impriman(todo tiene que ser de tipo caracter)
bueno al final una vez digitado todo como en el ejemplo de codigo de barras de la parte de arriba , asi de esta forma
N
A50,300,0,3,2,2,R,"Example6"
P1
todo esto va en notepad lo guardo con el nombre de ........Archivo.TXT en la unidad C:\
EJECUCION DE ARCHIVO CON COMANDO TPL
Para la ejecucion deveremos tomar en cuenta algo importante este archivo se ejecuta desde consola de DOS (pantallita negra) y una vez ejecutado la orden de impresion este busca un puerto COM o un puerto LPT1 que son puertos de impresion , si en nuestro caso no contamos con puertos COM o LPT1 y tenemos conectado la impresora a un puerto USB entonces deveremos seguir lo que viene a continuacion ,las personas que tienen conectada la impresora a un puerto COM o LPT1 pueden pasar por alto esta configuracion de los puertos. caso contrario sigan leyendo
Manos a la obra, a configurar el puerto ,lo que haremos sera sencillo , decirle a la computadora que imprima por puerto LPT1 o COM pero con cable USB , Diablos como se hace eso ?, no desesperarse deben,primero, configuramos que por defecto me imprima la impresora Zebra,para ello me voy a panel de control ,impresoras y luego simplemente y escojo por defecto a la impresora zebra seguimos los siguientes pasos .
1.- Crear la impresora usb en entorno Windows (recordemos que para esto devemos tener conectada la impresora con puerto usb e instalada en modo usb , esto se hace cuando se instala el driver )
2.- Compartir la impresora usb con un nombre no mayor de 8 digitos (simplemente compartir la impresora)
3.- Capturar la impresora compartida: \\Nombre de la PC\Nombre de Impresora compartida, con el siguiente comando ( lo hacemos en la pantallita negra de DOS :) inicio,ejecutar,escribimos CMD )
NET USE LPT1: \\Nombre de la PC\Nombre de la Impresora compartida /persistent:yes
Ejemplo: nombre de la PC: almtie30
nombre de la impresora compartida: etiqueta
Comando: (tomar atencion importante en los espacion y las separaciones es importantisimo)
net use lpt1: \\almtie30\etiqueta /persistent:yes
La opcion /persistent, deriva la impresoras permanentemente, en caso de no usar esta opcion la derivacion se perdera al reiniciar el equipo
4.- Para desactivar la derivacion del puerto utilizar el comando:
NET USE LPT1: /delete
5.- Para ver todos los recursos compartidos, utilizar el comando:
NET USE
ok :)
con esto configuramos nuestra impresora para que imprima por un cable USB
una vez terminado esto ejecuto mi archivo.txt que me cree lineas arriba
para ello ingreso nuevamente a la pantallita negra DOS (inicio,ejecutar,escribimos CMD )
y digito los siguiente
C:\Type archivo.txt> prn
recordemos que mi archivo.txt donde estan mis comando de TPL se encuentra en la unidad C:\
inmediatamente si hasta este momento todo esta correcto no deveria haber ningun problema (confio que no) asi podremos observar que la impresion es un codigo de barras .
Muy bien , ya se sabe como se hace un archivo.txt con comando TPL y tambien como ejecutarlo via manual
CREACION DE ARCHIVO BAT
Lo que pasa es que deseo imprimir pero sin estar teniendo que escribir o estar teniendo que entrar a la pantallita negra , tonces la solucion es crearme un archivo bat que sea capaz de realizar la tarea de impresion con tan solo un click para ello haremos lo siguiente
abrimos un block de notas y en el escribiremos lo siguiente
print c:\archivo.txt
y lo guardamos con extencion .BAT , osea que al momento de guardar el archivo lo hacemos poniendo un nombre y su extecion BAT
Ejemplo
Impresion.BAT
listo lo guardamos de preferencia en la unidad donde se encuentra mi archivo.txt , terminado esto me dare cuenta que el icono ya no tiene la forma de una hoja en blanco si no que tiene la forma de un tuerquita :) ese sera mi archivo que ejecutara mi impresion :)
GENEXUS X EVO 1 generando en Java
Lo que devere hacer en genexus sera crear un archivo txt , osea generar un archivo txt desde genexus y que este archivo txt contenga comando TPL que permitan imprimir, simple verdad , bueno entonces como genero un txt desde genexus?????
Facil :)
este codigo ira en el EVents de un webpanels
Event 'imprimir' // todo esto va dentro de un boton
&i = DFWOpen("c:\comandoszebraT.txt", ",", ' ') // direccionamos la unidad en la que queremos que se cree mi archivo txt y le damos el nombre con el que quiero que se
&i = dfwptxt(' ') // linea en blanco //cree
&i = dfwnext( ) // salto de linea
&i = dfwptxt(' ') // linea en blanco
&i = dfwnext( ) //salto de linea
&i = dfwptxt('N') // comienzo de comando zebra
&i = dfwnext( )
&i = dfwptxt( ' A50,300,0,3,2,2,R, "Example6" ' )
&i = dfwnext( )
&i = dfwptxt('P1') // fin de comandos zebra
&i = dfwnext( )
&i = dfwclose() // fin de creacion de txt
DO 'IMPRI' // llamo a un evento sub que me ejecuta el archivo bat para la impresion
EndEvent
Sub 'impri'
&M = shell('C:\Printexe.bat',1) // llamo al archivo bat que me ejcuta mi impresion :)
load
EndSub
hasta este punto no deeria tener problemas jejjejejejeje que tal espero que todo este yendo bien hasta ahora
INSERTANDO VARIABLES A MI CODIGO DE CREACION DE ARCHIVO TXT
Bien hasta ahora solo he impreso "Example6" en codigo de barras verdad (si leiste el manual podras hacer muchas mas cosas :)) pero no ideal es imprimir lo que tu quieras
dentro de ese espacio que esta reservado para el texto .
Pues bien manos a la obra , recordemos que lo que vaya dentro de ese espacio entre comillas que tenemos en los comandos TPL es de tipo caracter , asi que cualquier cosa que quiera insertar alli tendra que ser de tipo caracter , si quiero poner un numero tendre que convertirlo a caracter.
pero .................. no es asi de facil colocar mi variable y punto ..... yo tambien me desilcione en primera instancia sin embargo me faltaba algo ,que
la variable que deseaba que vaya en ese espacio este contenida en otra variable de tipo caracter y de tamaño 4 , por uqe???? , la verdad hasta ahora no se la razon pero de que funciono funciono aqui va el ejemplo
tengo la variable &nombre que es de tipo caracter de 30
lo que devere hacer para ingresarlo a mi codigo sera
crear una variable &nom de tipo caracter de 4 y almacenar la variable &nombre en &nom de esta manera
&nom = substr(&nombre,1,30)
listo eso es todo si quisiera rebajar el tamaño de letra simplemente bajo el numero de letras recorridas de 30 a 25 o a10 no se lo que les de la gana je.
de esa manera esto quedaria asi:
Event 'imprimir' // todo esto va dentro de un boton
&nom = substr(&nombre,1,30) // insertando variable de 30 en una de 4 jajajajaj increible , si alguien me explica por que pasa esto gracias¡¡¡¡
&i = DFWOpen("c:\comandoszebraT.txt", ",", ' ') // direccionamos la unidad en la que queremos que se cree mi archivo txt y le damos el nombre con el que quiero que se
&i = dfwptxt(' ') // linea en blanco //cree
&i = dfwnext( ) // salto de linea
&i = dfwptxt(' ') // linea en blanco
&i = dfwnext( ) //salto de linea
&i = dfwptxt('N') // comienzo de comando zebra
&i = dfwnext( )
&i = dfwptxt( ' A50,300,0,3,2,2,R, " ' + &NOM + ' " ' ) // tomar detalle de como ingresa la variable al espacio las comillas y el signo mas y todo eso
&i = dfwnext( )
&i = dfwptxt('P1') // fin de comandos zebra
&i = dfwnext( )
&i = dfwclose() // fin de creacion de txt
DO 'IMPRI' // llamo a un evento sub que me ejecuta el archivo bat para la impresion
EndEvent
que tal les gusto? , bueno espero ayudarles mucho en este tema a mi me tuvo mucho tiempo cabezon ni se imaginan lo que pense hacer para que me funcionara jajjaj naa tampoco tampoco jajajaja
claro esta que este es un ejemplo chiquito pero resuelve muchas dudas porfa mantengamos el foro con mas soluciones no es que sea el pata que creo la pagina nada que ver, lo que pasa es que la pagina me saco de muchos lios, felizmente en el trabajo nos dejan consultar esta pagina, me enseño muchas cosas espero que contribuyan para asi poder aprender mas , cuidense y un abrazo si no entendieron me escriben . tratare de responderles .
Valora esta pregunta


0