BASCULA CON CLACOM

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Responder
ApliCom2020
Mensajes: 7
Registrado: Dom Mar 15, 2020 3:18 pm
Contactar:

BASCULA CON CLACOM

Mensaje por ApliCom2020 » Mié Oct 21, 2020 4:49 pm

Hola a todos, requiero hacer una captura de información desde una báscula, intento usar el clacom, pero no se por donde iniciar, si algún hermano clarionero que me indicara como iniciar o proporcionarme un ejemplo lo agradecere....

saludos

Adolfo Ríos


duenda
Al nivel de RZ
Mensajes: 160
Registrado: Mar Mar 01, 2011 8:36 pm
Contactar:

Re: BASCULA CON CLACOM

Mensaje por duenda » Mar Oct 27, 2020 12:49 pm

Hola Adolfo:

Yo tengo en un sistema hecha captura de peso de una balanza vía WinEvent, que es un template de Capesoft. Si te sirve, puedo enviarte un ejemplo.

Saludos! Ileana

Avatar de Usuario
martinq
Al nivel de RZ
Mensajes: 128
Registrado: Dom Feb 06, 2011 9:43 pm
Ubicación: Montevideo - Uruguay
Contactar:

Re: BASCULA CON CLACOM

Mensaje por martinq » Mar Nov 17, 2020 4:37 am

Hola Ileana! Me podrias enviar el ejemplo del uso de WinEvent para leer el peso de una balanza?
Muchas gracias!!
queirolom @ gmail . com

duenda
Al nivel de RZ
Mensajes: 160
Registrado: Mar Mar 01, 2011 8:36 pm
Contactar:

Re: BASCULA CON CLACOM

Mensaje por duenda » Mar Nov 17, 2020 12:55 pm

Hola Martin:

Lo pongo acá por si le sirve a alguien más, porque además es un código muy simple y corto.

Paso 1: Obviamente agregar el Global Extension de Capesoft Win Event a la aplicación y en Global embebds: Inside the Global Map:
- Include the winevent map file
- Declare Auto-shutdown procedures

Paso 2: En el procedimiento donde se va a utilizar, agregar el Extension WinEvent: Alert Windows Messages

Paso 3: Lo primero que tenemos que hacer es una ventana de CONFIGURACION para la Balanza, donde se definirán datos como Puerto COM donde se conecta, BaudRate, Paridad, Bit de Datos, Bit de Parada, etc...
En esa ventana se pueden poner algunos botones de prueba y mensajes que muestren la respuesta para verificar la conexión.

Para ABRIR el puerto de conexión usamos una variable Global llamada PortId (LONG)

IF PortId > 0
message('El puerto ya se encuentra abierto: '&PortId)
ELSE
PortId = NewPort('Com' & ComPort & ':' & BaudRate & ',' & Parity & ',' & Databits & ',' & StopBits)
IF PortId < 0
stop('Error Abriendo Puerto COM: ' & ds_error())
ThisWindow.kill()
ELSE
message('El Puerto ha sido abierto: '&PortId)
END
END

Pruebo enviar un comando para ver si la balanza responde, usando yn campo de texto llamado SendString (en este caso le doy el valor = 'p')

IF WritePort(PortId,SendString,0).

Para leer la respuesta coloco un TIMER en la ventana y en el embebed del timer:

loop
result = ReadPort(PortId,TempChar,1)
If result > 0
if len(clip(receivestring)) = 20 then receivestring = ''.
receivestring = clip(receivestring) & TempChar
else
break
END
END

donde:

ReceiveString STRING(20)
TempChar STRING(1)
result BYTE

y voy testeando que me devuelve en ReceiveString

Paso 4: El código va a depender de lo que se quiera leer de la balanza y de los parámetros que la misma posea. En este caso particular la balanza con la que yo trabajé aceptaba lectura de peso enviando una letra 'p' minúscula, pero también aceptaba otras opciones que ahora no recuerdo (creo que P mayúscula traía el Precio y que también podía traerse el código del producto almacenado en la balanza). Para esto habrá que ver el Manual de Protocolo de Comunicación de la balanza con la que se esté trabajando.

Pero básicamente son dos acciones las que tenemos que hacer:

a) Enviar la solicitd de peso:

TAB:cantidad = 0 !campo que voy a usar para recuperar el peso
SendString = 'p'
IF WritePort(PortId,SendString,0).

b) Poner un TIMER que nos indique cuando la balanza devuelva algo:

loop
result = ReadPort(PortId,TempChar,20)
If result > 0
TAB:Cantidad = CLIP(SUB(TempChar,2,6))

!redondeo decimales
CASE SUB(LOC:Decimales) !por ejemplo, si se quiere redondear según alguna configuración en el sistema
OF 0
TAB:Cantidad = ROUND(TAB:Cantidad ,1)
OF 1
TAB:Cantidad = ROUND(TAB:Cantidad,.1)
OF 2
TAB:Cantidad = ROUND(TAB:Cantidad,.01)
OF 3
TAB:Cantidad = ROUND(TAB:Cantidad,.001)
OF 4
TAB:Cantidad = ROUND(TAB:Cantidad,.0001)
END

DISPLAY(?TAB:Cantidad)
POST(EVENT:ACCEPTED,?OK) !O la acción que se realizará una vez leído el peso
else
break
END
END

Avatar de Usuario
martinq
Al nivel de RZ
Mensajes: 128
Registrado: Dom Feb 06, 2011 9:43 pm
Ubicación: Montevideo - Uruguay
Contactar:

Re: BASCULA CON CLACOM

Mensaje por martinq » Mié Nov 18, 2020 4:12 am

Muchas gracias!!


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados