Herramientas de comunicacion ( COMM port Tools )

Post Reply
User avatar
dbzap
Posts: 189
Joined: Mon Nov 07, 2005 7:36 pm
Location: Chile
Contact:

Herramientas de comunicacion ( COMM port Tools )

Post by dbzap »

Hola a todos....
El viejo clipper nos sigue la pista....
Tenemos un cliente que usaba un viejo programita ( clipper + lib desconocida de comunicaciones ) que leia desde una balanza electronica via puerto de comunicaciones.
Varias de las instrucciones las ubico o entiendo, pero en general existen mas de las que podria analizar...
Entonces lo que busco, es alguna LIB actual o PRGs, o clase.... lo que sea de un simil de estas funciones....alguien tendra por ahi estas cosas ?
Dejo aqui un ejemplo de lo que logre rescatar
Gracias de antemano a todos

Code: Select all

Function Main()
Local mnPesoAux := 15.37

mnPesoAux := val( substr( pesaje(1,2400,'e',7,1,19000) ,3,10) )

? mnPesoAux
save to PESOINVE.MEM all like mnPesoAux

Return NIL

**************************************************************
Function Pesaje(puerta,baudios,paridad,dato,parada)
***************************************************************
Local COK
Local LINEA
Local T1
Local NUM
Local D
local BASE := 9
Local mnPeso
Local aPesos := {}


COM_CLOSE(PUERTA)
COK=COM_OPEN(PUERTA,256)
COM_INIT(PUERTA,BAUDIOS,PARIDAD,DATO,PARADA)
COM_SOFT(PUERTA, .T.)
LINEA = ""
MILLISEC(300)
DATO = "13,"+STR(BASE,1,0)+";1.1.1%y"
COM_SEND(PUERTA,DATO)
MILLISEC(300)
T1 = TIME()


DO WHILE !COM_SOFT_S(PUERTA)
   IF (TIMETOSEC(TIME()) - TIMETOSEC(T1)) > 15
      EXIT
   ENDIF
ENDDO


IF (TIMETOSEC(TIME()) - TIMETOSEC(T1)) < 15
   NUM = 0
   DO WHILE .T.
      IF COM_COUNT(PUERTA) > 0 .OR. ( NUM > 0 .AND. NUM <= 9000)
         D=COM_READ(PUERTA,1)
         IF D = CHR(10)
            if len(aPesos) > 100
               exit
            else
               aadd(aPesos, LINEA )
            endif
            LINEA = ""
         ELSE
            IF LEN(LINEA) = 0
               LINEA = D
               NUM = 0
            ELSE
               LINEA = LINEA + D
               NUM = 0
            ENDIF
            IF LINEA = "ENDofDB"
               EXIT
            ENDIF
         ENDIF
      ELSE
         EXIT
      ENDIF
   ENDDO
ENDIF


COM_CLOSE(PUERTA)
mlOK   := .f.
mnPeso := 0
if len(aPesos) > 1
   mnPeso :=  val(substr(atail(aPesos), (at('kg', atail(aPesos) ) - 7) , 7))
   For i=1 to len(aPesos)
       ? mnPeso , val(substr(alltrim(aPesos[i]), (at('kg', alltrim(aPesos[i]) ) - 7) , 7))
       if mnPeso # val(substr(alltrim(aPesos[i]), (at('kg', alltrim(aPesos[i]) ) - 7) , 7))
          mlOK := .t.
        endif
   next
endif
if mlOK
   mnPeso := 0
endif


? mnPeso

RETURN mnPeso
Julio Gonzalez V.
RANDOM S.A.
SISTEMICA S.A.
alfonso
Posts: 46
Joined: Fri Mar 09, 2007 1:31 pm
Location: España

Herramientas de comunicacion ( COMM port Tools )

Post by alfonso »

Hola,

Hace unos años utilizé unas librerias de comunicaciones para desarrollar un programa de gestion y control de pesaje y carga automatica de camiones de cemento. Tal vez pueda ayudarte. Contacta a través de mi e_mail.

Saludos,
Post Reply