Page 1 of 1

PROBLEMA IMPRESIÓN

Posted: Thu Jun 08, 2006 1:16 pm
by mamartin
Hola,
estoy realizando una aplicación en la que tengo que imprimir vía bluetooth (cuento con una HP Ipaq con Windows movile 5.0 y una impresora con un adaptador bluetooth), la forma de imprimir es igual que la que aparece en el ejemplo bluetooth.prg.

Mi aplicación cuenta con un botón imprimir que llama a la siguiente función:

FUNCTION WIMPALB()

Local cTexto:=""
Local cCabeza:=""
Local nTotal:=0
Local hOut

USE (cRutaFic+"\PARAPK") NEW
GO TOP
cPuerto:="COM"+str(PARAPK->PSALIDA,1)+":"
CLOSE PARAPK

//EL PUERTO ES EL COM8:
hOut := CreateFile( rtrim(cPuerto),;
GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )

DO WHILE hOut < 0 .AND. nVeces <= 30
hOut := CreateFile( rtrim(cPuerto),; // Cambiamos el n£mero dependiendo del puerto de la pocket
GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL )
nVeces++
ENDDO

IF hOut < 0
MsgInfo(OemToAnsi("Ha sido imposible abrir el puerto para imprimir, por favor comprueba que est activado el bluetooth ") + ;
OemToAnsi("y que en par metros est n configurados los puertos de salida y entrada"),;
OemToAnsi("ATENCIàN"))
ELSE

cCabeza:= cTabu + substr(rtrim(PARA->NOMC) + " - " + rtrim(PARA->CIF),1,nCaracter) + chr(10) + chr(13)
GHC->(DBGOTOP())
GHC->(DBSEEK(GCV->NUM))
DO WHILE GHC->NALC=GCV->NUM .AND. .NOT. GHC->(EOF())
cTexto:=cTexto + SPACE(2) + transform(GHC->UNID,"@EZ 9,999.9") + " " + substr(GHC->TEXTO,1,20) + " " + transform(GHC->PREC,"@EZ 9,999.999") + ;
" " + transform(GHC->DTO,"@EZ 999") + " " + transform(GHC->TOTAL,"@EZ 999,999.999") + chr(10) + chr(13)
GHC->(DBSKIP(1))
ENDDO

SendText( hOut, cCabeza )

SendText( hOut, cTexto )

MsgInfo("ENVIADO A IMPRIMIR",OemToAnsi("ATENCIàN"))

CloseHandle( hOut )

ENDIF
RETURN NIL


STATIC FUNCTION SendText( hOut, cText )
local n

for n = 1 to Len( cText )
WriteByte( hOut, Asc( SubStr( cText, n, 1 ) ) )
next

RETURN NIL

**************************************************************************************************************************

El problema que tengo es que a pesar de que me abre bien el puerto (siempre me devuelve hOut > -1), hay veces en las que me imprime y otras veces no (enviando a imprimir siempre los mismos datos).

Es decir yo puedo pulsar una o dos veces el botón de imprimir y no imprimirme y pulsarlo una tercera vez e imprimir entonces, y a veces funciona bien a la primera.

Sobre todo me pasa cuando apago la pocket y la vuelvo a encender entonces la primera vez que mando imprimir no me suele funcionar, sin embargo a la segunda o tercera vez que lo intento si que funciona.

¿ Se les ocurre a que puede ser debido o como puedo solucionarlo ?

Muchas gracias