Buenos dias estimados amigos del foro
En el foro encontre estas funciones que estoy tratando de adecuarlas a mis necesidades, pero tengo 2 problemas.
1.- cuando ligo el programa con esta funcion SetCommState( @cDcb ) ) me da un error de Windows encontro un problema y debe cerrar
2.- Comentada esta funcion corre el programa , la primera vez captura la llamada y tomo de la cadena emitida el valor correspondiente al
numero telefonico, para al volver a intertar tomar la siguiente llamada ya no aparece nada.
por favor si alguien me puede ayudar adjunto el codigo
Utilizo xHarbour 10.4 y Fwh de abril del 2010
Gracias de antemano
#include "fiveWin.ch"
function fReadPort
local cDcb, lError, nError
local numero := space(8)
cErrCode := space( 15 )
if !( gnCom := OpenComm( 'COM3', 1024, 256 ) ) == 0
*IF ! SetCommState( gnCom, cDcb )
* nError = GetCommError( gnCom)
* MsgInfo( "Error al setear: " + Str( nError ) )
* RETURN 0
* ELSE
* MsgRun("Puerto Seteado")
*-ENDIF
if !(BuildCommDcb( "COM3:9600,E,8,1", @cDcb )) //.and. SetCommState( @cDcb ) )
nError := GetCommError( gnComm, @cErrCode )
MsgAlert( "Error No se pudo abrir Puerto "+ str( nError ) + CRLF + cErrCode)
RETURN( .f. )
endif
endif
*?? 'pase open'
cBlock=space(702)
*nTry=0
*?? 'antes de do'
do while .T.
do while .T. //nTry<10 // can remove this nTry if not applicable
if ( nBytes := readComm( gnComm, @cBlock) ) > 0
msgwait('Llamada a ingresado..','',2)
?? cblock
exit
else
msgwait('Esperando llamada.... ','',1)
endif
enddo
numero := substr(cBlock,47,10)
*?? numero
*Lector() //*/* Lueog lo procesamos.
*graba_llamada(numero)
*numero := space(8)
if FlushComm( gnComm, 0 ) != 0
nError = GetCommError( gnComm )
Msgwait( 'Error Limpiando el COM Error:' ,'',.01 )
endif
if ! CloseComm( gnComm )
nError = GetCommError( gnComm )
Msgwait( 'No Pude cerrar el com Error: ' ,'',.01 )
endif
cBlock=space(702)
if MsgYesno('Desea salir','Atencion')
return nil
endif
enddo
RETURN( .t. )
function graba_llamada(numero)
local codbus
DBSELECTAREA("tregis")
ordSetfocus("iregis")
*dbgotop()
if regismas(codbus:=numero)
ponlock()
trtelefono := numero
trfecha := date()
quilock()
endif
return nil