Page 1 of 1

Limpieza buffer puerto comm

PostPosted: Mon May 09, 2022 2:51 pm
by leandro
Hola buenas tardes para todos,

Resulta que tenemos instalada una bascula, la cual registra la lectura en forma continua, CTP20, después de varias horas de trabajo, la lectura se bloquea, y el proceso de SETEAR el puerto COMM, comienza a salir error. De momento para solucionar el problema, se reinicia el computador y todo vuelve a la normalidad. Quisiera intentar limpiando el buffer del COMM, para evitar tener que reiniciar la maquina.

De antemano gracias

Code: Select all  Expand view

FUNCTION abrirport(n)
LOCAL IdPort,cDcb,nError
IdPort := OpenComm("COM"+STR(n,1),1024,256)
IF IdPort <= 0
   nError = GetCommError( IdPort)
   MsgInfo( "Error al abrir: " + Str( nError ) )
   ELSE
   MsgRun("Puerto abierto como " + STR(IdPort))
ENDIF
IF ! BuildCommDcb("COM"+STR(n,1)+":9600,n,8,1" , @cDcb)
   nError = GetCommError( IdPort)
   MsgInfo( "Error al Configurar: " + Str( nError ) )
   RETURN 0
   ELSE
   MsgRun("Puerto Configurado")
ENDIF
IF ! SetCommState( IdPort, cDcb )
   nError = GetCommError( IdPort )
   MsgInfo( "Error al setear: " + Str( nError ) ) //AQUI SALE EL ERROR EVENTUALMENTE
   RETURN 0
   ELSE
   MsgRun("Puerto Seteado")
ENDIF
RETURN IdPort
 

Re: Limpieza buffer puerto comm

PostPosted: Tue May 10, 2022 5:22 am
by Antonio Linares
Leandro,

Que error sale ?

Re: Limpieza buffer puerto comm

PostPosted: Tue May 10, 2022 2:17 pm
by karinha
De esta manera de usar el puerto comm no hay un comando que verifique si el puerto se ha cerrado y si intenta volver a abrir? ¿Como en HBCOMM.LIB? En HBCOMM.LIB, abre el puerto, cierra el puerto, borra el buffer, etc.

Regards, saludos.

Re: Limpieza buffer puerto comm

PostPosted: Tue May 10, 2022 3:41 pm
by leandro
Antonio gracias por responder

El error que devuelve es el que se ve en el MsgInfo( "Error al setear: " + Str( nError ) )

Por eso es que no logro saber que es lo que pasa.

karinha, Amigo gracias como siempre por responder.

Tienes de casualidad un ejemplo de uso de esta librería :oops:

De antemano gracias

Re: Limpieza buffer puerto comm

PostPosted: Wed May 11, 2022 11:47 am
by karinha

Re: Limpieza buffer puerto comm

PostPosted: Fri May 20, 2022 11:02 pm
by leandro
karinha gracias por la ayuda, busque en el foro de Brasil y encontré, esta función, que se basa en hbcomm.lib, la voy a probar para ver si soluciona el problema que tenemos, cualquier cosa comentare de nuevo.

Muchas gracias de antemano.

Code: Select all  Expand view

func recebepeso(cPorta,nBound,nDataBit,nstop,nBuffer)
   Local nPeso := 0
   NHANDLE:=Init_Port(cPorta,nBound,nDataBit,0,nstop,nBuffer)
   OutBufClr(NHANDLE) // Limpa o Buffer de Saida
   OUTCHR(NHANDLE,CHR(5))
   SysWait(0.3)
   Bytes := InbufSize(NHANDLE)
   DADOS=SPACE(20)

   Buffer := InChr( NHANDLE, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA
   UnInt_Port(nHandle)

   dados=alltrim(dados)
   nPeso:=val(substr(dados,4,6))/1000
 return(dados)