Error sobre una bascula (SOLUCIONADO)

Error sobre una bascula (SOLUCIONADO)

Postby VitalJavier » Wed Jun 01, 2016 3:37 pm

Que tal compañeros
Les quería preguntar si a los que utilizan una bascula les ocurre esto:

- Al estar conectado por el puerto serial, inicia correctamente y todo funcióna
muy bien, pero después de 5 minutos me marca un error : APPCRASH

- Si tengo desconectada la bascula pero el cable conectado al PC no pasa nada
no me marca el error

Le pongo algo de mi fuente para que vean :
1.- Abro el puerto
2.- Meto en un timer el estar leyendo la pesada

Code: Select all  Expand view


    IF !AbrePto1()
        lPuerto := .F.
        _IdI := 106
    ELSE
        lPuerto := .T.
    ENDIF   

      Define Timer oTimer INTERVAL PARBASCULA->LECTURA Action LecturaPto1()

FUNCTION AbrePto1
    local nBytes,cDcb
    nComm := OpenComm(AllTrim(PARBASCULA->COM),AllTrim(PARBASCULA->ENTRADA),AllTrim(PARBASCULA->SALIDA))
    IF nComm <= 0
        nError = GetCommError( nComm )
        MiMsgStop( {"No se pudo abrir el puerto..."+ Str( nError )},"Alto!", , .T., 5)
        RETURN .F.
    ENDIF      
    cCad := AllTrim(PARBASCULA->COM)+":"+AllTrim(PARBASCULA->VELOCIDAD)+","+AllTrim(PARBASCULA->PARITY)+","+AllTrim(PARBASCULA->DATABITS)+","+AllTrim(PARBASCULA->STOPBIT)
    IF !BuildCommDcb( cCad, @cDcb )
        nError = GetCommError( nComm )
        MiMsgStop( {"No se pudo configurar el puerto..."+ Str( nError )},"Alto!", , .T., 5)
        RETURN .F.
    ENDIF
    IF !SetCommState(nComm,cDcb)
        nError = GetCommError( nComm )
        MiMsgStop( {"Error Al Setear el Puerto..."+ Str( nError )},"Alto!", , .T., 5)
        RETURN .F.
    ENDIF
RETURN .T.

FUNCTION LecturaPto1()
    Local cBuffer := Space( 30 )   
    nBytes := WriteComm(nComm,AllTrim(PARBASCULA->COMANDO)) //aquimando una "P"
    IF nBytes <= 0
        RETURN
    ENDIF  
    IF FlushComm(nComm,0) != 0
        RETURN
    ENDIF  
    ReadComm( nComm, @cBuffer )  
    IF Empty(cBuffer) .OR. Len(AllTrim(cBuffer)) <= 0 .OR. AllTrim(cBuffer) = "kg"     
        RETURN
    ENDIF       
   cBuffer := StrTran( cBuffer, CHR( 13 ), "" )
    cBuffer := StrTran( cBuffer, CHR( 10 ), CRLF )
    IF Empty(cBuffer) .OR. Len(AllTrim(cBuffer)) <= 0 .OR. AllTrim(cBuffer) = "kg"     
        RETURN
    ENDIF   
    nPunto := AT(".",cBuffer)
    IF nPunto = 0
        RETURN
    ENDIF   
    cBuffer := AllTrim(cBuffer)
    cBuffer := SubStr(cBuffer,1,AT(".",cBuffer)+3)
    nPesada := Val(AllTrim(cBuffer))
    IF nPesada = 0
        PONE_CEROS1()    // Este pone en pantalla unos ceros
    ELSE
        CalculaNum1(nPesada)   // Aquí pongo la pesada
    ENDIF   
RETURN

 


Ya le intente casi de todo y no logro quitar este error
si alguien ya lo libro me podrían echar un hilo

Gracias.
Last edited by VitalJavier on Thu Jun 02, 2016 5:58 pm, edited 2 times in total.
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Error sobre una bascula

Postby karinha » Wed Jun 01, 2016 4:15 pm

Poste el ERROR.LOG.

Que usas HBCOMM.LIB?

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

Re: Error sobre una bascula

Postby VitalJavier » Wed Jun 01, 2016 6:29 pm

Esta es la imagen : me dice que dejo de funcionar
Last edited by VitalJavier on Sun Jun 05, 2016 10:29 pm, edited 1 time in total.
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Error sobre una bascula

Postby karinha » Wed Jun 01, 2016 6:48 pm

Cual tu version de Fivewin? Usas el ERRSYSW.PRG original de tu version ó usas una más vieja(antigua) de una version inferior?

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

Re: Error sobre una bascula

Postby Antonio Linares » Wed Jun 01, 2016 6:57 pm

Prueba a usar una variable static para que esa función no se ejecute más de una vez:

FUNCTION LecturaPto1()
Local cBuffer := Space( 30 )

static lTrabajando := .F.

if ! lTrabajando
lTrabajando = .T.

nBytes := WriteComm(nComm,AllTrim(PARBASCULA->COMANDO)) //aquimando una "P"
IF nBytes <= 0
RETURN
ENDIF
IF FlushComm(nComm,0) != 0
RETURN
ENDIF
ReadComm( nComm, @cBuffer )
IF Empty(cBuffer) .OR. Len(AllTrim(cBuffer)) <= 0 .OR. AllTrim(cBuffer) = "kg"
RETURN
ENDIF
cBuffer := StrTran( cBuffer, CHR( 13 ), "" )
cBuffer := StrTran( cBuffer, CHR( 10 ), CRLF )
IF Empty(cBuffer) .OR. Len(AllTrim(cBuffer)) <= 0 .OR. AllTrim(cBuffer) = "kg"
RETURN
ENDIF
nPunto := AT(".",cBuffer)
IF nPunto = 0
lTrabajando = .F.
RETURN
ENDIF
cBuffer := AllTrim(cBuffer)
cBuffer := SubStr(cBuffer,1,AT(".",cBuffer)+3)
nPesada := Val(AllTrim(cBuffer))
IF nPesada = 0
PONE_CEROS1() // Este pone en pantalla unos ceros
ELSE
CalculaNum1(nPesada) // Aquí pongo la pesada
ENDIF

lTrabajando = .F.
endif
RETURN
regards, saludos

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

Re: Error sobre una bascula

Postby VitalJavier » Thu Jun 02, 2016 3:00 pm

Joao, buen dia
Tengo la version de Septiembre de 2010, FWH + xHarbou
y se supone que trabajo con el original ERRSYSW.PRG

Antonio, buen dia.
ya le puse las condiciones que me marcas, pero si le pongo como me
dices ya no marca nada de pesada.

Donde puedo conseguir la librería HBCOMM.LIB para xharbou ??
para probar.

o Sera que le falta algo a la PC, alguna actualización ??

Saludos.
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Error sobre una bascula

Postby karinha » Thu Jun 02, 2016 3:14 pm

Internta asi, antes del DEFINE DIALOG...

Code: Select all  Expand view

  Define Timer oTimer INTERVAL 500 Action LecturaPto1()
 


HBCOMM.LIB esta en el directótio del xharbour\lib

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

Re: Error sobre una bascula

Postby karinha » Thu Jun 02, 2016 3:16 pm

Mira se ejiste una funcion equivalente del fivewin asi:

Code: Select all  Expand view

IF !ISWORKING(nComm)
    MsgStop( "Porta do Leitor Desconectada! ",
             "Erro Ao Tentar Abrir a Porta Serial " )
    RETURN( .T. )
ENDIF
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7800
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Error sobre una bascula

Postby VitalJavier » Thu Jun 02, 2016 4:27 pm

Joao, parece que ya funciono, ya lleva media hora funcionando
antes pasaban 5 minutos y tronaba

1.- Le puse el DEFINE timer (antes del define dialog)
2.- Le cambie la configuración del puerto "Control de Flujo : Xon/Xoff"

y ya esta funcionando, no se cual fue, el detalle que ya quedo (hasta ahorita)

Gracias por su ayuda.
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Error sobre una bascula (SOLUCIONADO)

Postby ACC69 » Fri Jun 03, 2016 7:09 pm

VitalJavier wrote:Que tal compañeros
Les quería preguntar si a los que utilizan una bascula les ocurre esto:

- Al estar conectado por el puerto serial, inicia correctamente y todo funcióna
muy bien, pero después de 5 minutos me marca un error : APPCRASH

- Si tengo desconectada la bascula pero el cable conectado al PC no pasa nada
no me marca el error

Le pongo algo de mi fuente para que vean :
1.- Abro el puerto
2.- Meto en un timer el estar leyendo la pesada

Code: Select all  Expand view


    IF !AbrePto1()
        lPuerto := .F.
        _IdI := 106
    ELSE
        lPuerto := .T.
    ENDIF   

      Define Timer oTimer INTERVAL PARBASCULA->LECTURA Action LecturaPto1()

FUNCTION AbrePto1
    local nBytes,cDcb
    nComm := OpenComm(AllTrim(PARBASCULA->COM),AllTrim(PARBASCULA->ENTRADA),AllTrim(PARBASCULA->SALIDA))
    IF nComm <= 0
        nError = GetCommError( nComm )
        MiMsgStop( {"No se pudo abrir el puerto..."+ Str( nError )},"Alto!", , .T., 5)
        RETURN .F.
    ENDIF      
    cCad := AllTrim(PARBASCULA->COM)+":"+AllTrim(PARBASCULA->VELOCIDAD)+","+AllTrim(PARBASCULA->PARITY)+","+AllTrim(PARBASCULA->DATABITS)+","+AllTrim(PARBASCULA->STOPBIT)
    IF !BuildCommDcb( cCad, @cDcb )
        nError = GetCommError( nComm )
        MiMsgStop( {"No se pudo configurar el puerto..."+ Str( nError )},"Alto!", , .T., 5)
        RETURN .F.
    ENDIF
    IF !SetCommState(nComm,cDcb)
        nError = GetCommError( nComm )
        MiMsgStop( {"Error Al Setear el Puerto..."+ Str( nError )},"Alto!", , .T., 5)
        RETURN .F.
    ENDIF
RETURN .T.

FUNCTION LecturaPto1()
    Local cBuffer := Space( 30 )   
    nBytes := WriteComm(nComm,AllTrim(PARBASCULA->COMANDO)) //aquimando una "P"
    IF nBytes <= 0
        RETURN
    ENDIF  
    IF FlushComm(nComm,0) != 0
        RETURN
    ENDIF  
    ReadComm( nComm, @cBuffer )  
    IF Empty(cBuffer) .OR. Len(AllTrim(cBuffer)) <= 0 .OR. AllTrim(cBuffer) = "kg"     
        RETURN
    ENDIF       
   cBuffer := StrTran( cBuffer, CHR( 13 ), "" )
    cBuffer := StrTran( cBuffer, CHR( 10 ), CRLF )
    IF Empty(cBuffer) .OR. Len(AllTrim(cBuffer)) <= 0 .OR. AllTrim(cBuffer) = "kg"     
        RETURN
    ENDIF   
    nPunto := AT(".",cBuffer)
    IF nPunto = 0
        RETURN
    ENDIF   
    cBuffer := AllTrim(cBuffer)
    cBuffer := SubStr(cBuffer,1,AT(".",cBuffer)+3)
    nPesada := Val(AllTrim(cBuffer))
    IF nPesada = 0
        PONE_CEROS1()    // Este pone en pantalla unos ceros
    ELSE
        CalculaNum1(nPesada)   // Aquí pongo la pesada
    ENDIF   
RETURN

 


Ya le intente casi de todo y no logro quitar este error
si alguien ya lo libro me podrían echar un hilo

Gracias.



Hola buenas tardes Ing. VitalJavier, es muy interesante tu codigo fuente,me podria servir a futuro,sera que nos podrias compartir las funciones que faltan Pone_Ceros1() calculaNum1() y los que hagan faltan y que librerias enlazar .

Gracias Ing. VitalJavier te agradeceria mucho .

Saludos

Atte: Adrian C. C.
acc69@hotmail.com
ACC69
 
Posts: 632
Joined: Tue Dec 12, 2006 7:34 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 38 guests