Limpieza buffer puerto comm

Limpieza buffer puerto comm

Postby leandro » Mon May 09, 2022 2: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

Code: Select all  Expand view  RUN

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Limpieza buffer puerto comm

Postby Antonio Linares » Tue May 10, 2022 5:22 am

Leandro,

Que error sale ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Limpieza buffer puerto comm

Postby karinha » Tue May 10, 2022 2: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
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Limpieza buffer puerto comm

Postby leandro » Tue May 10, 2022 3: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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Limpieza buffer puerto comm

Postby karinha » Wed May 11, 2022 11:47 am

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7835
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Limpieza buffer puerto comm

Postby leandro » 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.

Code: Select all  Expand view  RUN

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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 46 guests