Page 1 of 2

impresion de ticket por puerto USB

PostPosted: Fri Jul 24, 2009 12:19 pm
by Loren
Compañeros:

Estoy perfeccionando y añadiendo opciones nuevas a mi aplicación
viewtopic.php?f=6&t=9716&hilit=presumiendo

Entre otras quiero darle la opción a que el usuario pueda seleccionar la salida de la impresión: Puerto LPTx o USB, dependiendo del tipo de impresora de ticket que disponga. Si es por puerto LPTx (como hasta ahora), no hay problemas pues siempre lo hice a traves de TDOSPRN. El problema está si el usuario selecciona USB por tener una impresora de ticket térmica. En este caso:
- ¿debo enviar la impresión mediante DEFINE PRINT...?
- Si es así... ¿Como controlo el corte de papel, la apertura del cajón portamonedas... etc...?
- He visto que incluso hay aplicaciones comerciales de TPV que imprimen hasta un logotipo en el ticket, ¿Como lo hacen?

Mil gracias.
A la espera de respuestas, saluda
Loren.

Re: impresion de ticket por puerto USB

PostPosted: Fri Jul 24, 2009 2:58 pm
by marca
Ola

Eu utilizo o Dosrpin.exe q. tem na net

*************************************//***************************************
FUNCTION ImpSpool( cFileTxt, cPorta, lErase )
*************************************//***************************************

IF Left(Upper(cPorta),3) = "USB" .OR. oPub:wImpJato // Usb Ou Jato de tinta

WAITRUN( oPub:wPathRaiz + "DOSPRIN /SEL'" + AllTrim(oPub:wPorta) + "' " + cFileTxt )
FErase( cFileTxt )

ELSEIF Left( Upper(cPorta),3) = "LPT" ......

Re: impresion de ticket por puerto USB

PostPosted: Fri Jul 24, 2009 3:05 pm
by Willi Quintana
Hola,,,
Al igual que tu, me enfrente al mismo problema,,, impresoras de ticket del tipo USB, asi que la unica solucion rapida y sin cambiar codigo fue la siguiente:

Code: Select all  Expand view
1.- Compartir la Impresora USB
2.- "Redireccionar" la salida LTP1 de dos maneras:
   a: En la archivo AUTOEXEC.NT que  se encuentra en \WINDOWS\SYSTEM32  colocar lo siguiente:
       NET USE LPT1 \\NOMBRE_PC\IMPRESORA_TICKET /PERSISTENT:YES

   b: Utilizar  la funcion  NETREDIR("LPT1","\\NOMBRE_PC\IMPRESORA_TICKET")  antes de realizar la impresion

Y sigues usando la TDOSPRINT con todas sus bondades.....

 

Salu2

Re: impresion de ticket por puerto USB

PostPosted: Fri Jul 24, 2009 6:25 pm
by pablovidal
La mejor opción es darle ese problema a Windows...

Code: Select all  Expand view

Function PrintDosForWin()
Local cTexto     := ""
Local ON_GRANDE  := CHR(27) + CHR(33) + CHR(16) // Para Impresoras Epson
Local OFF_GRANDE := CHR(27) + CHR(33) + CHR(01) // Para Impresoras Epson
Local cPrinter   := GetDefaultPrinter()    // Seleciona la Impresora Por Defecto de Windows
Local CRLF       := CHR(13) + CHR(10)
Local cFileName  := "texto.prn"

cTexto += "Esta es la primera linea del texto" + CRLF
cTexto += Replicate( "*-", 20 ) + CRLF
cTexto += ON_GRANDE + "LETRAS GRANDES" + OFF_GRANDE + CRLF
cTexto += "Esta es otra linea de texto..." + CRLF
cTexto += PADL( "Izquierza", 40 ) + CRLF
cTexto += PADC( "CENTRALIZADO", 40 ) + CRLF
cTexto += PADR( "Derecha", 40 ) + CRLF
cTexto += PADC( "< Linea Final >", 40, "-" ) + CRLF


 If WriteStream( cFileName, cTexto )
  // Envia la Impresion al Spool de Windows
  PrintFileRaw( cPrinter, cFileName, "Impresion En Formato DOS desde Windows" )
  FERASE( cFileName )
 EndIF

Return Nil



// Esta Funcion la encontre por ahi...
FUNCTION WriteStream( cFile, cStream )
LOCAL nHandle := FCreate( cFile )

  IF FError() <> 0
   RETURN( .F. )
  ENDIF

  FWrite( nHandle, cStream, Len(cStream) )

 FClose( nHandle )

RETURN ( FError() == 0 )

Re: impresion de ticket por puerto USB

PostPosted: Wed Aug 04, 2010 10:46 pm
by cuatecatl82
Hola a la comunidad, tengo un problema y acudo austedes para que me orienten ya que no doy
con la solución, resulta que en mi sistema uso algunos reportes generados con la TDOSPRN, la
cual trabajaba bien en puertos LPT1,LPT2,LPT3, ya que uso impresoras matriciales para facturas y una laser
miniprinter en LPT2 para tickets, todo trabajaba bien, pero hace 2 dias una de las impresoras fallo y
no tiene reparación, asì que nos enganchamos de la impresora de otro departamento para trabajar
pero en ese departamento tienen una laser conectada a USB es una HP Laserjet 1018, la comparti
para usarla en la red y ya estan detectadas en las maquinas de la red, los reportes con TPrinter y TReport
trabajan bien, no asì los programanados con TDOSPRN, los genera y algunos los visualizo con vista previa (TXTPREV),
pero al mandarlos a impresión la pc se cuelga, el revisar el servicio de la cola de impresion de la pc
que tiene conectada la laser aparece el reporte como imprimiendo, pero no lo hace, si voy y lo imprimo en la maquina
directamente hace lo mismo, lo manda a la cola pero no imprime, sospecho que la clase TDOSPRN que uso no tiene soporte
a puertos USB, les dejo el ejemplo de como lo hago para que puedan darme una pista de donde podria estar la soluciòn.

No quisiera modificar los reportes porque son laboriosos ya que en ellos imprimo pagares de cuentas a credito y es un
problema volver a buscar la orientaciòn y los margenes de impresiòn.

http://www.megaupload.com/?d=O2JGM5GY

En el ejemplo que doy uso el "truco" que permite redireccìonar la impresion a otro puerto, pero no funciona,
he revisado por muchos post, pero no doy,

WINEXEC('NET USE LPT1: &cPuerto/Persistent:Yes ',0)

Supongo que encontrando la clase TDOSPRN con soporte a USB podre solucionarlo, ojala puedan ayudarme o si me
pudieran decir si existe dicha modificaciòn.
.

Gracias..

Re: impresion de ticket por puerto USB

PostPosted: Thu Aug 05, 2010 1:33 am
by Willi Quintana
Prueba asi:
,,,,,,
,,,,
,,
,
vServer := "COMMAND.COM /C NET USE \\cNomPc\cNomPrinter /persistent:yes"
WaitRun(vServer,0) // ejecutor externo

Salu2

Re: impresion de ticket por puerto USB

PostPosted: Thu Aug 05, 2010 3:47 pm
by cuatecatl82
Hola Willi buen dia: :) :D

Te comento que ya lo habia probado antes y da el mismo resultado, hay algo que acabo de encontrar en el spool de la impresora, envie el mismo reporte con TDOSPRN 2 veces, si revisan la imagen se daràn cuenta que la primera impresion el tamaño esta en 0 bytes, mientras que la segunda que esta en espera tiene un tamaño de 411 bytes, eso me hace creeer que el problema esta en que la impresora no recibe la informaciòn a imprimir y se queda estancada hasta que desconecte la impresora para borrarla, si le doy cancelar impresiòn aparece el recuadro preguntando la confirmaciòn de la cancelaciòn, pero no la elimina de la lista. :twisted: :evil:

Image

Si alguien pudiera decirme si existe alguna modificación a la Clase para adaptarla a puertos USB estare muy agradecido.. :!: :oops: :cry: :mrgreen:

Saludos..

Re: impresion de ticket por puerto USB

PostPosted: Thu Aug 05, 2010 8:19 pm
by sysctrl2
paisa, has probado con DOSPRN ?

http://ba-k.com/showthread.php?t=482775

saludos...

Re: impresion de ticket por puerto USB

PostPosted: Thu Aug 05, 2010 11:37 pm
by cuatecatl82
Cesar buenas Tardes:

No paisa :lol: , tampoco funciona :x , lo extraño es que con aplicaciones de Clipper si trabaja, no entiendo que pueda pasar, el problera radica en que talvez el puerto USB no interpreta bien el mandato a impresión ya intente con otros modelos de impresoras en otras computadoras y hace lo mismo, he conectado el cable a otros puertos y tampoco, parece que usar un puente con alguna aplicaciòn de terceros similar y realizar las modificaciones puedrìa ser la solución pero no me convence, lo mejor serìa hacerlo de la forma mas nativa posible, sigo investigando y si encuentro como realizarlo subire las modificaciones que realize.

Gracias.. :wink: :mrgreen: :mrgreen: :mrgreen:

Re: impresion de ticket por puerto USB

PostPosted: Fri Aug 06, 2010 3:55 pm
by derpipu
Amigos, yo hice un proceso medio dudoso pero eficiente, yo tambien uso el TDosPrn

1- primero compartan esa impresora en el equipo por ejemplo \\equipo\impresora
2- usando el comando net use desde la consola del DOS
net use lpt1: \\equipo\impresora /persistent:yes
3- el comando debe de decir que esta completado y ya...
4- al mandar a imprimir debera de salir correcto

saludos

LF

Re: impresion de ticket por puerto USB

PostPosted: Fri Aug 06, 2010 7:20 pm
by sysctrl2
el problema es con impresoras laser.

Re: impresion de ticket por puerto USB

PostPosted: Mon Aug 09, 2010 3:01 pm
by cuatecatl82
Que tal Luis Fernando:

La soluciòn que comentas ya esta aplicada directamente desde el codigo, y aùn asì probando a imprimir un .PRN desde una ventada DOS el Comando lo completa, pero tambien se queta atascado en el spool de la impresora.

Cesar:
El Problema radica con impresoras USB Laser en modo remoto y local, en impresoras Laser en conecciòn LPT1 local y remoto lo hace bien, lo he problado con la lasr HP 1200 y 1100 sin problemas.

Sigo inisitiendo en que el problema lo radica TDOSPRN por la incompatibilidad directa con puertos USB, encontre una ultilidad que permite la impresiòn casi como la necesito pero tiene 2 inconvenientes:

1 Es de pago e imprime que es un programa demo y 2 por el tamaño y tipo de fuente que maneja internamente cambia de lugar los textos a imprimir, a primera instancia me parecio que era la soluciòn, pero desisti porque es una lata estar cambiando de ubicaciòn de los SAY`s() a imprimir sin saber a que tipo de impresora se enviara el reporte.

Sigo urgando estudiando y entendiendo la clase, el tiempo que tengo es poco y casi no puedo probar, buscando en la red encontre una Clase adaptada para USB, no la pude probar porque los enlaces a descarga estan muertos, si alguien pudiera prestarme un respaldo se lo agradecere, o si tienen alguna otra idea serà bienvenida...

Saludos.. :mrgreen: :mrgreen:

Re: impresion de ticket por puerto USB

PostPosted: Mon Aug 09, 2010 4:47 pm
by Willi Quintana
HOla,,, las indicaciones que he posteado, las uso sin mayor inconveniente,,, en todo caso te agrege a mi messenger, haz tu lo mismo,,,
ekasoftware@hotmail.com
Salu2

Re: impresion de ticket por puerto USB

PostPosted: Fri Aug 27, 2010 10:42 pm
by cuatecatl82
Hola de nuevo buenas tardes, de nuevo aqui reviviendo post muertos pero sigo con el mismo problema :x , no habia continuado con la soluciòn del mismo porque estuve de vacaciones forzadas :cry: , y apenas hoy que regrese me encuentro que nos habian dado nuestra nueva impresora, la desempaco y la instalo, y pensando que el problema se habia resuelto, resulta que no, ahora es peor :evil: :!: :!: :?: :| , pues no solo TDOSPRN no funciona, si no que TPrinter tampoco, al momento de mandar a imprimir el reporte se queda congelado el sistema y no imprime.

Alguien tiene idea de que puede estar pasando ahora con TPrinter pues ni en local ni en remoto imprime. :cry: :x


Image
(Ahì se queda congelado y no avanza más, debo reiniciar para poder trabajar)

Antes con la impresora Laser en Lpt1 en red y local funcionaba TDOSPRN y TPrinter de maravilla.

Image

Porque ahora con esta impresora no, es una HP OfficeJet 4500 conectada al puerto USB y probada en modo local y remoto.

Image


PD: Willi Disculpa por no contestar antes, pero no puedo conectarme a Messenger desde mi trabajo, ya intente desbloqueando puertos, el problema esta en el 2wire, pero no tengo la contraseña prea accesar.. si pudieras contactarme por correro te lo agradecerìa, se que es una lata, pero es lo que puedo hacer por ahora.. :oops:

Lo curioso de todo este problema es que TReport si funciona en todos los modelos de impresoras ya sea conectados en modo local o en red con cable USB o LPT1.
En todas las maquinas uso XP Sp2

Quedo en espera de su bondadosa Ayuda.. Gracias..

Re: impresion de ticket por puerto USB

PostPosted: Fri Aug 27, 2010 10:58 pm
by sysctrl2
paisa, has probado con \samples\testprn.prg ?

saludos..