Estimados Listeros.
Estoy tratando de leer el puerto serial de mi PC donde tengo un en COM2 un pocesador de imagenes (contador de personas) con camaras. Bien uso un programa de terceros que base por ahi y trabaja de maravillas, envia y lee perfectamente. (utilizo el mismo seteo de COM2)
Mi problema se da en la siguiente instruccion.
if ( BitesSend := WriteComm( nComm, "02 30 30 30 31 31 33 30 30 31 34 03" )) > 0
msgwait('Sen han enviado'+str(BitesSend,5),'',.900)
ENDIF
Donde este string "02 30 30 30 31 31 33 30 30 31 34 03" es un comando al contador de personas donde deveria
de devolver el siguiente estring 000193100000006800000091000000000000000019
Con la lectura no hay problema es con la escritura, que aunque mando el comando no retorna nada.
Con este programa trabaja de bien
http://www.busmaticcr.com/pantalla.bmp
Haber en que me pueden ayudar pues he tratado y he bajado todos los ejemplos del sitio y no logro.
Dejo a Continuacion el Programa.
#include "Fivewin.ch"
function LeErPuertos()
Local cDcb, lError, nError
Local nComm := OpenComm( "COM2", 4024, 1024 )
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
/*
"02 30 30 30 31 31 33 30 30 31 34 03" este es un comando de procesador de imagenes stereo camaras
y deberia de devolver esto 000193100000006800000091000000000000000019
*/
if ( BitesSend := WriteComm( nComm, "02 30 30 30 31 31 33 30 30 31 34 03" )) > 0
msgwait('Sen han enviado'+str(BitesSend,5),'',.5000)
ENDIF
cBlock=space(1024)
nTry=0
do while nTry<10 // can remove this nTry if not applicable
if ( nBytes := readComm( nComm, @cBlock) ) > 0
msgwait('Esperando haber si lee algo , espere'+str(nTry,5),'',.10)
LogFile( "Milagros.log", cBlock)
exit
else
nTry++
msgwait('Leyendo Puerto ... Ahora.. '+str(nTry,5),'Haber si logramos ver algo ',.900)
endif
if nTry==10
LogFile( "Milagros.log", cBlock)
Quit
endif
if ( BitesSend := WriteComm( nComm, "02 30 30 30 31 31 33 30 30 31 34 03" )) > 0
msgwait('Sen han enviado'+str(BitesSend,5),'',.900)
ENDIF
enddo
if FlushComm( nComm, 0 ) != 0
nError = GetCommError( nComm )
Msgwait( 'Error Limpiando el COM Error:' ,'',.01 )
endif
if ! CloseComm( nComm )
nError = GetCommError( nComm )
Msgwait( 'No Pude cerror el com Error: ' ,'',.01 )
endif
return nil