FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour CAPTURAR LAMADA DE CENTRAL TELEFONICA
Posts: 195
Joined: Sat Oct 22, 2005 01:17 PM
CAPTURAR LAMADA DE CENTRAL TELEFONICA
Posted: Sun Mar 13, 2011 01:02 PM

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

Saludos

Oscar

Fwh 23.10, bcc55

Posts: 133
Joined: Mon May 12, 2008 04:13 PM
Re: CAPTURAR LAMADA DE CENTRAL TELEFONICA
Posted: Sun Mar 13, 2011 06:31 PM

Hola buenas tardes

Una soluci贸n es la siguiente
al principio del programa abres el puerto utilizando las mismas funciones con sus respectivas validaciones como lo estas haciendo

Function Main
nCommB := OpenComm( )
BuildCommDcb()
SetCommState( )
.
. llamado de Funciones
.
closecomm()

Primero que no estas abriendo y cerrando el puerto cada vez que estas registrando una llamada y segundo te evitas el error del SetCommState( )

dejas la misma funci贸n sin la parte de abrir y cerrar los puerto

function l fReadPort
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

cBlock=space(702)
if MsgYesno('Desea salir','Atencion')
return nil
endif
enddo
RETURN( .t. )

le quitas el closecomm() que debe ir es cuando vas a cerrar por completo el programa

recomendaci贸n puedes usar el FlushComm( gnComm, 1 ) para que limpie la cola de recepci贸n.

Eso sirve bien para balanzas, abrir gavetas, llamadas todo lo relacionado con puerto

Ing. Luis Duque - Venezuela

Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
Posts: 195
Joined: Sat Oct 22, 2005 01:17 PM
Re: CAPTURAR LAMADA DE CENTRAL TELEFONICA
Posted: Mon Mar 14, 2011 01:33 PM

Luis Muchas gracias
voy a probar y comunico los resultados

Saludos

Oscar

Fwh 23.10, bcc55

Continue the discussion