CAPTURAR LAMADA DE CENTRAL TELEFONICA

CAPTURAR LAMADA DE CENTRAL TELEFONICA

Postby EASYSOFT » Sun Mar 13, 2011 1: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 10.4, bcc55
EASYSOFT
 
Posts: 172
Joined: Sat Oct 22, 2005 1:17 pm
Location: Quito - Ecuador

Re: CAPTURAR LAMADA DE CENTRAL TELEFONICA

Postby luisduque » Sun Mar 13, 2011 6: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
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Re: CAPTURAR LAMADA DE CENTRAL TELEFONICA

Postby EASYSOFT » Mon Mar 14, 2011 1:33 pm

Luis Muchas gracias
voy a probar y comunico los resultados
Saludos
Oscar
Fwh 10.4, bcc55
EASYSOFT
 
Posts: 172
Joined: Sat Oct 22, 2005 1:17 pm
Location: Quito - Ecuador


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests