Problema al leer puerto com con un lector de tags
Posted: Tue Nov 17, 2009 8:42 pm
Buenas a todos.
Mi proble es el siguiente: Tengo un lector de tags (las tarjetitas de los autobuses) conectado a COM2 que escanea los mismos varias veces cada vez que se pasa. Cuando se pasa, debe leer el codigo y meterlo en una base de datos con un solo campo que recoge la lectura completa.
El codigo que manda es el siguiente: aa00058001b3586801004900020128253db7.
Cuando lo lee, me general dos registros. uno con: a y otro con el resto: a00058001b3586801004900020128253db7
Se que tengo algo mal en el codigo pero no se que es. Adjunto codigo que en la funcion BytesAtPort() es donde recoge los datos del puerto COM2.
Muchas gracias de antemano.
Mi proble es el siguiente: Tengo un lector de tags (las tarjetitas de los autobuses) conectado a COM2 que escanea los mismos varias veces cada vez que se pasa. Cuando se pasa, debe leer el codigo y meterlo en una base de datos con un solo campo que recoge la lectura completa.
El codigo que manda es el siguiente: aa00058001b3586801004900020128253db7.
Cuando lo lee, me general dos registros. uno con: a y otro con el resto: a00058001b3586801004900020128253db7
Se que tengo algo mal en el codigo pero no se que es. Adjunto codigo que en la funcion BytesAtPort() es donde recoge los datos del puerto COM2.
Muchas gracias de antemano.
Code: Select all
#include "FiveWin.ch"
function Main()
local oDlg, nComm := InitComm()
DEFINE DIALOG oDlg
oDlg:bCommNotify = { | nComm, nStatus | BytesAtPort( nComm, nStatus ) }
ACTIVATE DIALOG oDlg ;
ON INIT EnableCommNotification( nComm, oDlg:hWnd, 20, 20 )
CloseComm( nComm )
return nil
function InitCOMM()
local cDcb, nError, nBytes
local nComm := OpenComm( "COM2", 1024, 128 )
if ! BuildCommDcb( "COM2:9600,n,8,1", @cDcb )
MsgStop( "Error BUILD!" )
return .f.
endif
#ifdef __CLIPPER__
if ! SetCommState( cDcb )
#else
if ! SetCommState( nComm, cDcb )
#endif
MsgStop( "Error SETCOMM!" )
return .f.
endif
return nComm
function BytesAtPort( nComm, nStatus )
local cBuffer := Space(256)
local oLeido
ReadComm( nComm, @cBuffer )
oLeido:=AllTrim( cBuffer )
oLeido = STRTRAN( oLeido, CHR( 13 ), "" )
oLeido = STRTRAN( oLeido, CHR( 10 ), "" )
msgwait('Esperando mas . . .','',1)
USE CCHIP
APPEND BLANK
REPLACE CCHIP->CHIP WITH oLeido
return nil