FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Limpieza buffer puerto comm
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Limpieza buffer puerto comm
Posted: Mon May 09, 2022 02:51 PM

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

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
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Limpieza buffer puerto comm
Posted: Tue May 10, 2022 05:22 AM

Leandro,

Que error sale ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Limpieza buffer puerto comm
Posted: Tue May 10, 2022 02:17 PM

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.

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Limpieza buffer puerto comm
Posted: Tue May 10, 2022 03:41 PM

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

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Limpieza buffer puerto comm
Posted: Wed May 11, 2022 11:47 AM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Limpieza buffer puerto comm
Posted: Fri May 20, 2022 11:02 PM

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.

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)
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]

Continue the discussion