Hola amigos.
Mi problema es el siguiente.
Tengo un SCANNER Metrologic IS 1650 2D
He bajado la rutina de lectura de puertos la puse abajo , donde la implemente y me funciona bien creo al menos con esta configuracion , pero segun me he dado cuenta el tamaño de la lectura debe de ser 700 bytes, cuando leo el codigo 2d me graba un archivo de 660 bytes .
MI pregunta debo de cambiar alguna parametrizacion de esta rutina, de ser asi donde.
LA configuracion de "COM4:9600,N,8,1" trabaja pero algo falta o sobra
Agradezco ayuda cualquiera.
#include "Fivewin.ch"
//* Tomado del foro Fivetechsoft
FUNCTION MAIN()
LOCAL oDlg
LOCAL oGet, cTxt := ""
LOCAL nCom
DEFINE DIALOG oDlg;
SIZE 800, 200;
TITLE "Terminale"
@ 0, 0 GET oGet VAR cTxt MEMO
oGet:bKeyDown = { | nKey | Tasti( nCom, nKey ) }
ACTIVATE DIALOG oDlg;
ON INIT ( oGet:AdjClient(),;
nCom := APRICOM( oDlg, oGet ),;
IF( nCom < 0, oDlg:End(), ) );
CENTER
IF nCom >= 0; CLOSECOMM( nCom ); ENDIF
MemoWrit( "cd.txt", cTxt )
Lector()
RETURN NIL
STATIC FUNCTION TASTI( nCom, nKey )
* SENDSTR( nCom, CHR( nKey ) )
RETURN NIL
STATIC FUNCTION APRICOM( oDlg, oGet )
LOCAL nCom, cDcb
BEGIN SEQUENCE
nCom = OPENCOMM( "COM4", 1,1 )
IF nCom < 0
? "Error de Apertura de Puerto de Comunicaciones."
BREAK
ENDIF
BUILDCOMMDCB( "COM4:9600,N,8,1", @cDcb )
IF !SETCOMMSTATE( nCom, cDcb )
? "Errore di impostazione della porta di comunicazione."
BREAK
ENDIF
oDlg:bCommNotify = { | nCom | Connect( nCom, oGet ),;
EnableCommNotification( nCom, oDlg:hWnd, 1, -1 ) }
IF !ENABLECOMMNOTIFICATION( nCom, oDlg:hWnd, 1, -1 )
? "Errore di abilitazione della notifica."
BREAK
ENDIF
RECOVER
nCom = -1
END SEQUENCE
RETURN nCom
STATIC FUNCTION CONNECT( nCom, oGet )
LOCAL cStr
ENABLECOMMNOTIFICATION( nCom,0, 1, -1 ) && 0,1,-1
cStr = RECEIVESTR( nCom )
cStr = STRTRAN( cStr, CHR( 13 ), "" )
cStr = STRTRAN( cStr, CHR( 10 ), CRLF )
oGet:Append( cStr )
RETURN NIL
STATIC FUNCTION SENDSTR( nCom, cString )
* LOCAL nBytes := WRITECOMM( nCom, cString )
* RETURN nBytes = LEN( cString )
return
STATIC FUNCTION RECEIVESTR( nCom )
LOCAL cBuf := SPACE(701)
RETURN LEFT( cBuf, READCOMM( nCom, @cBuf ) )
Gracias.
Busmatic de CR