Impresion desde Pocket
Impresion desde Pocket
Hola,
- Hay previsto realizar alguna clase para poder imprimir desde una Pocket ?
- Alguien tiene algun ejemplo de como abordar este tema ?
Saludos a todos
C.
- Hay previsto realizar alguna clase para poder imprimir desde una Pocket ?
- Alguien tiene algun ejemplo de como abordar este tema ?
Saludos a todos
C.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
user
Yo imprimo mediante bluetooth.
El código que utilizo es el mismo que hay por el foro, pero
bueno aun así te pongo un ejemplo, por si te puede ayudar
en algo.
**************************
Local cTexto:=""
local hOut := CreateFile( "COM6:",GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
//com6 --> puerto com de salida
cTexto:= "TEXTO A IMPRIMIR" + chr(10) + chr(13) + chr(12)
SendText( hOut, cTexto )
CloseHandle( hOut )
**************************
FUNCTION SendText( hOut, cText )
local n
for n = 1 to Len( cText )
WriteByte( hOut, Asc( SubStr( cText, n, 1 ) ) )
next
RETURN NIL
Yo el problema que tenía era que no añadía al final de la cadena de texto el salto de página (chr(12)) con lo que el folio con el texto no llegaba a salir por la impresora.
El código que utilizo es el mismo que hay por el foro, pero
bueno aun así te pongo un ejemplo, por si te puede ayudar
en algo.
**************************
Local cTexto:=""
local hOut := CreateFile( "COM6:",GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
//com6 --> puerto com de salida
cTexto:= "TEXTO A IMPRIMIR" + chr(10) + chr(13) + chr(12)
SendText( hOut, cTexto )
CloseHandle( hOut )
**************************
FUNCTION SendText( hOut, cText )
local n
for n = 1 to Len( cText )
WriteByte( hOut, Asc( SubStr( cText, n, 1 ) ) )
next
RETURN NIL
Yo el problema que tenía era que no añadía al final de la cadena de texto el salto de página (chr(12)) con lo que el folio con el texto no llegaba a salir por la impresora.
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Siguiendo con el tema de imprimir, yo lo hago de la siguinete manera.
Escribo el listado en un fichero ASCII,
bien con Set PRINTER TO <file> y luego imprimiento con ?"Texto" o Qout("texto")
o creando el fichero con fCreate, y montado el listado con fWrite
una vez terminado, lo imprimo con la funcion que cirucla por el foro para imprimir via bluetooth.
Esto en impresoras conectadas por cable via RS232 funciona perfecto, pero con impresoras via bluetooth, no me termina el listado. Parece que no envia los datos a la impresora hasta tener una cantidad determinada de bytes. Con lo cual un trozo de listado se queda en el buffer, sin imprimir, y por ahora no se como vaciarlo(flush del com quizas).
Escribo el listado en un fichero ASCII,
bien con Set PRINTER TO <file> y luego imprimiento con ?"Texto" o Qout("texto")
o creando el fichero con fCreate, y montado el listado con fWrite
una vez terminado, lo imprimo con la funcion que cirucla por el foro para imprimir via bluetooth.
Code: Select all
...
Set( 24 , cDirLocal+'carga.prn',.F.) //Redirecciono a fichero
SET PRINTER ON
SET DEVICE TO PRINTER
BEGIN SEQUENCE
Exi->(dbGoTop())
Cabecera(++nPag,cTitulo,aRango,aLinCab) //Cabecera
While !Exi->(Eof())
If pRow()>26 .AND. Cfg->Prn=='S'
Cabecera(++nPag,cTitulo,aRango,aLinCab)
ENDIF
IF Exi->Ini<>0
? Exi->ArtCod,DescArt(Exi->ArtCod),Exi->Ini //Detalle
ENDIF
Exi->(dbSkip())
End
? Chr(12)
END SEQUENCE
SET PRINTER OFF
SET PRINTER TO
SendText( MemoRead( cDirlocal+'carga.prn')) //Envio al puerto serie
fErase(cDirLocal+'carga.prn')
...
//---------------------------------
FUNCTION SendText( cText )
//---------------------------------
LOCAL i, hOut := CreateFile( "COM6:",GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
IF hOut==-1
MsgStop('No pudo abrise el puerto de impresora')
ELSE
FOR i = 1 TO Len( cText )
WriteByte( hOut, Asc( SubStr( cText, i, 1 ) ) )
NEXT
CloseHandle( hOut )
ENDIF
RETURN NIL
Hola mamartin,
Gracias por tu respuesta. Voy a intentar experimentar hoy, pero tengo unas cuantas dudas conceptuales:
1.- Se imprime directamente a una impresora q tiene dispositivo bluetooth, o al ordenador via bluetooth y usando una de sus impresoras asignadas ? (joder, quizas he dicho alguna tonteria )
2.- Como se configura los puertos en la Pocket ?
Biel,
Yo no tengo ni idea 'aun' para el manejo via bluetooth, pero al igual se deberia 'simular' un eject para forzar el vaciado del buffer (joder, me parece q la he vuelto a cargar... )
Venga, saludos y gracias a todos. A ver si conseguimos controlar este tema.
C.
Gracias por tu respuesta. Voy a intentar experimentar hoy, pero tengo unas cuantas dudas conceptuales:
1.- Se imprime directamente a una impresora q tiene dispositivo bluetooth, o al ordenador via bluetooth y usando una de sus impresoras asignadas ? (joder, quizas he dicho alguna tonteria )
2.- Como se configura los puertos en la Pocket ?
Biel,
Yo no tengo ni idea 'aun' para el manejo via bluetooth, pero al igual se deberia 'simular' un eject para forzar el vaciado del buffer (joder, me parece q la he vuelto a cargar... )
Venga, saludos y gracias a todos. A ver si conseguimos controlar este tema.
C.
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Carles,
el tema blutooth va de la siguiente manera.
Tienes una impresora bluetotth, o un conversor bluetooth de estos que se conectan al puerto centronics de la impresora, y por otro lado tienes el pocket PC con bluetooht.
Primero se asocia un dispositivo con el otro, la manera de hacerlo depende de cada fabricante, con eso tienes el enlace entre los dos dispositivos.
En el Pocket PC, el dispositivo bluetoth es tratado como un COM, entonces lo que haces es escribir sobre el puerto serie que tiene asociado el dispositvo bluetooth de tu PPC, y este lo envia al otro elemento asociado, que es la impresora.
Espero haberte aclarado algo el tema.
el tema blutooth va de la siguiente manera.
Tienes una impresora bluetotth, o un conversor bluetooth de estos que se conectan al puerto centronics de la impresora, y por otro lado tienes el pocket PC con bluetooht.
Primero se asocia un dispositivo con el otro, la manera de hacerlo depende de cada fabricante, con eso tienes el enlace entre los dos dispositivos.
En el Pocket PC, el dispositivo bluetoth es tratado como un COM, entonces lo que haces es escribir sobre el puerto serie que tiene asociado el dispositvo bluetooth de tu PPC, y este lo envia al otro elemento asociado, que es la impresora.
Espero haberte aclarado algo el tema.
Last edited by Biel EA6DD on Fri Mar 24, 2006 5:09 pm, edited 1 time in total.
Biel,
Ok. Enterado y aclarado -> gracias. Yo veo importante el hecho de poder transmitir un documento en casa de un 'cliente'. A partir de aqui, seguro q los 'clientes', no tendran impresoras con bluetooth o conversores de este tipo, pero si es posible, q tengan ordenadores con esta capacidad, por lo q la solucion pasaria por transmitirle el documento via bluetooth e imprimirlo desde su impresora asociada, si tiene.
En este caso, la transmision hacia el PC, se generaria usando el mismo concepto que para impresora, no ?. Voy a probar a ver....
Gracias.
C.
Ok. Enterado y aclarado -> gracias. Yo veo importante el hecho de poder transmitir un documento en casa de un 'cliente'. A partir de aqui, seguro q los 'clientes', no tendran impresoras con bluetooth o conversores de este tipo, pero si es posible, q tengan ordenadores con esta capacidad, por lo q la solucion pasaria por transmitirle el documento via bluetooth e imprimirlo desde su impresora asociada, si tiene.
En este caso, la transmision hacia el PC, se generaria usando el mismo concepto que para impresora, no ?. Voy a probar a ver....
Gracias.
C.
Carles , es raro el señor que tiene bluetooht en su ordenador , lo que si es mas normal es que el vendedor , lleve una impresora bluetooht en el coche , conectada al mechero ( de estas tipo ticket) , y le mande la impresion a ese dispositivo ( los repartidores de cocacola , los de seur etc , funcionan así) .
Saludso.
Saludso.
Jose Luis Parajón
Asturias
Asturias
yo creo que debemos distingir dos cosas :
1.- uso en autoventa o similar , donde lo que das es un albaran (o factura) , creo que en ese caso impresora de tickets bluetooth , lo mas portatil posible
en la furgoneta , mira esta http://www.deremate.com.ar/accdb/viewIt ... I=11720052
, coche de viajante o similar ( incluso existiran posiblemente aparatos pocket con impresora incluidas).
Mira aqui a seguro que ves algo que te ilumina:D (lo digo por lo de flamagas) http://www.flamagas.com/default.asp?NODO=5506
2.- el pasar unos datos al cliente , en ese caso , lo mas facil es construir un archivo de texto plano ( como indica biel ) y mandar el texto a un email del cliente .Luego el hace con el lo que crea oportuno .
Yo uso este segundo metodo en mi programa , y es muy operativo .
Saludso.
1.- uso en autoventa o similar , donde lo que das es un albaran (o factura) , creo que en ese caso impresora de tickets bluetooth , lo mas portatil posible
en la furgoneta , mira esta http://www.deremate.com.ar/accdb/viewIt ... I=11720052
, coche de viajante o similar ( incluso existiran posiblemente aparatos pocket con impresora incluidas).
Mira aqui a seguro que ves algo que te ilumina:D (lo digo por lo de flamagas) http://www.flamagas.com/default.asp?NODO=5506
2.- el pasar unos datos al cliente , en ese caso , lo mas facil es construir un archivo de texto plano ( como indica biel ) y mandar el texto a un email del cliente .Luego el hace con el lo que crea oportuno .
Yo uso este segundo metodo en mi programa , y es muy operativo .
Saludso.
Jose Luis Parajón
Asturias
Asturias
Jose Luis,
Gracias por la iluminacion, uno no conocia este mundillo, jejeje. La opcion del email creo q es la q mejor se ajusta. Yo pensaba, q podria ser mas facil, traspasar un fichero, pero veo q hay demasiados factores a tener en cuenta. Al final y de momento., correo y tira palante.
Gracias a todos.
Saludos.
C.
Gracias por la iluminacion, uno no conocia este mundillo, jejeje. La opcion del email creo q es la q mejor se ajusta. Yo pensaba, q podria ser mas facil, traspasar un fichero, pero veo q hay demasiados factores a tener en cuenta. Al final y de momento., correo y tira palante.
Gracias a todos.
Saludos.
C.
A usar el ingenio muchachos.......
Como tip ( con un poco de trampa ) .
Resulta que los señores usuarios de las pda usan con la central un sistema de mail de vodafone llamado algo asi como PUSH ¿¿
Este sistema instala unas carpetas en el programa Tmail de microsoft de la pda para funcionar ( y nada de protocolos smtp y similar ).
Solucion .... usar el Tmail
Parece facil verdad ?
Pues no tanto aqui nos encontramos con microsoft que tiene un bug en su tmail.exe .
Si ponemos archivo adjunto nos borra el destinatario y el body del mensaje .
Tenemos que decidir entre que el usuario busque el archivo a adjuntar , y los textos aparezcan escritos , o que ya vaya el archivo adjunto , pero el usuario añada de la agenda el destinatario ( para eso está ) y escriba el texto .
Yo cogui esta segunda .
Para los que usan mail normal por gprs una muy buena opcion es instalar un programa mail free llamado "npop" que a diferencia del tmail NO TIENE EL BUG , y el proceso es mas sencillo (usar el mismo codigo de antes pero sustituye tmail.exe por npop.exe )
Espero os sirva , a mi me salva la vida .
Saludso.
Como tip ( con un poco de trampa ) .
Resulta que los señores usuarios de las pda usan con la central un sistema de mail de vodafone llamado algo asi como PUSH ¿¿
Este sistema instala unas carpetas en el programa Tmail de microsoft de la pda para funcionar ( y nada de protocolos smtp y similar ).
Solucion .... usar el Tmail
Code: Select all
cTexto:= "Envio pedidos dia "+dtoc(date())+"a las " + Time() +" del Vendedor "+cVend
eSubject:="?Subject="+ cTexto
eBody:="&body=" + cTexto
eTo:="mailto:"+ cDestino
eAttachment:="&attach="+ oApli:cCurdir+cdirsal+"\"+cfile
CmdLine = eto+eSubject+ebody+eAttachment
Shellexecute(ownd:hWnd,"open","Tmail.exe" ,cMdLine )
Pues no tanto aqui nos encontramos con microsoft que tiene un bug en su tmail.exe .
Si ponemos archivo adjunto nos borra el destinatario y el body del mensaje .
Tenemos que decidir entre que el usuario busque el archivo a adjuntar , y los textos aparezcan escritos , o que ya vaya el archivo adjunto , pero el usuario añada de la agenda el destinatario ( para eso está ) y escriba el texto .
Yo cogui esta segunda .
Para los que usan mail normal por gprs una muy buena opcion es instalar un programa mail free llamado "npop" que a diferencia del tmail NO TIENE EL BUG , y el proceso es mas sencillo (usar el mismo codigo de antes pero sustituye tmail.exe por npop.exe )
Espero os sirva , a mi me salva la vida .
Saludso.
Jose Luis Parajón
Asturias
Asturias
Jose Luis,
Muy bueeeeeno.
Siempre estamos con los tip y las trampas, jejeje. Lo importante es llegar al objetivo.
Thanks por el tip.
C.
Muy bueeeeeno.
Code: Select all
A usar el ingenio muchachos.......
Thanks por el tip.
C.