Limpieza buffer puerto comm

Post Reply
User avatar
leandro
Posts: 1770
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 49 times
Been thanked: 12 times
Contact:

Limpieza buffer puerto comm

Post 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


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 24.09 ] [ xHarbour 64 bits) ]
User avatar
Antonio Linares
Site Admin
Posts: 42644
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 59 times
Been thanked: 93 times
Contact:

Re: Limpieza buffer puerto comm

Post by Antonio Linares »

Leandro,

Que error sale ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 7956
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 4 times
Contact:

Re: Limpieza buffer puerto comm

Post 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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
leandro
Posts: 1770
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 49 times
Been thanked: 12 times
Contact:

Re: Limpieza buffer puerto comm

Post 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
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 24.09 ] [ xHarbour 64 bits) ]
User avatar
karinha
Posts: 7956
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 4 times
Contact:

Re: Limpieza buffer puerto comm

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
leandro
Posts: 1770
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Has thanked: 49 times
Been thanked: 12 times
Contact:

Re: Limpieza buffer puerto comm

Post 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


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 24.09 ] [ xHarbour 64 bits) ]
Post Reply