Página 1 de 1

Leer datos de una bascula con WinEvent

Publicado: Mié May 18, 2011 11:43 am
por FaustinoGarcia
Hola

Tengo la necesidad de leer una bascula con una window desde una app;
compre el WinEvent pero "nunca" lo use y "nunca" hice este tipo de
trabajo. La bascula está conectada con una RS232 a la PC.

Necesito "una receta", por así decirlo, para usar/configurar el WinEvent para tomar datos desde un puerto COM es más "no se ni por donde empezar" ni donde leer en el manual de Capesoft; el WinEvent sirve para varias tareas y mi falta total de experiencia en este tema me complica más las cosas.

En fin... me pueden tirar una punta para empezar?? se que cada bascula tiene su forma de enviar los datos lo que "necesito" 1ro. es configurar el WinEvent para que lea el puerto COM (sea como sea lo enviado por la bascula). Me pueden ayudar???

Estoy "desnudo", a los gritos, con dos palillos en las manos, remando en el dulce de lecho y sentado en una cascara de nuez... :shock: :o :(

Desde ya Gracias!!
Faustino Garcia
Tucumán - ARG

Re: Leer datos de una bascula con WinEvent

Publicado: Jue May 19, 2011 3:38 am
por gsanchez

Código: Seleccionar todo

! === Leemos bascula === !
buf                  STRING(1024)
GLO:BasParam = 'COM' & CFG:BasPuerto & ':' & CLIP(CFG:BasVelocidad) & ',' & CLIP(CFG:BasParidad) & ',' & CLIP(CFG:BasDataBit) & ',' & CLIP(CFG:BasStopBit)
! COM1:9600,N,8,1   <-- Ejemplo

! --- Abrimos puerto --- !
pid#  =  NewPort(CLIP(GLO:BasParam),1024,1024)
 
! --- Enviamos identificador a la bascula --- !
! En la mayoria de las básculas hay que enviarle una 'P' para que nos envie el peso
buf = 'P'  !Length = 1
BSent# = WritePort(pid#,buf,1)

ds_Sleep(50)      !Retardamos 1/2 segundo

! --- leemos el peso --- !
BRec# = ReadPort(pid#,buf,0)

! --- Cerramos puerto --- !
ClosePort(pid#)

! En este momento ya tenemos el peso en la variable Buf
! La mayoria de las básculas te devuelve algo como esto: '10.6 Kg'
! es necesario quitarle la palabra Kg yo lo hago con la función vuKeepChars
! de Valutilities; puedes implantar algo con pos/instring
! --- Obtenemos el peso --- !
LOC:Peso = buf
LOC:Chars = '0123456789.'
LOC:Cantidad = vuKeepChars(LOC:Peso,LOC:Chars)

! Listo, el peso esta en la variable LOC:Cantidad
Espero que te sirva este ejemplo

Saludos

Re: Leer datos de una bascula con WinEvent

Publicado: Jue May 19, 2011 12:19 pm
por FaustinoGarcia
Gracias!!! :)

Por supuesto que sirve, tengo una consulta más:
Este codigo puede ir en una ROUTINE o FUNCION que sea convocada desde un botón (Ejm: Leer Bascula) o donde debo poner este embeb??

Saludos
Faustino Garcia
Tucumán - ARG

Re: Leer datos de una bascula con WinEvent

Publicado: Jue May 19, 2011 2:17 pm
por gsanchez
yo lo tengo en el embed de un botón; si el cliente necesita pesar la mercancia oprime el boton "pesar" y se ejecuta la rutina antes mencionada y despues manipulo la variable LOC:Cantidad como me convenga

Saludos

Re: Leer datos de una bascula con WinEvent

Publicado: Jue May 19, 2011 2:55 pm
por FaustinoGarcia
Muchisimas GRACIAS!!

La G es de Gustavo??

Re: Leer datos de una bascula con WinEvent

Publicado: Jue May 19, 2011 3:44 pm
por gsanchez
Gerardo :)

Re: Leer datos de una bascula con WinEvent

Publicado: Dom May 26, 2013 3:20 am
por handradev
gsanchez escribió:

Código: Seleccionar todo

! === Leemos bascula === !
buf                  STRING(1024)
GLO:BasParam = 'COM' & CFG:BasPuerto & ':' & CLIP(CFG:BasVelocidad) & ',' & CLIP(CFG:BasParidad) & ',' & CLIP(CFG:BasDataBit) & ',' & CLIP(CFG:BasStopBit)
! COM1:9600,N,8,1   <-- Ejemplo

! --- Abrimos puerto --- !
pid#  =  NewPort(CLIP(GLO:BasParam),1024,1024)
 
! --- Enviamos identificador a la bascula --- !
! En la mayoria de las básculas hay que enviarle una 'P' para que nos envie el peso
buf = 'P'  !Length = 1
BSent# = WritePort(pid#,buf,1)

ds_Sleep(50)      !Retardamos 1/2 segundo

! --- leemos el peso --- !
BRec# = ReadPort(pid#,buf,0)

! --- Cerramos puerto --- !
ClosePort(pid#)

! En este momento ya tenemos el peso en la variable Buf
! La mayoria de las básculas te devuelve algo como esto: '10.6 Kg'
! es necesario quitarle la palabra Kg yo lo hago con la función vuKeepChars
! de Valutilities; puedes implantar algo con pos/instring
! --- Obtenemos el peso --- !
LOC:Peso = buf
LOC:Chars = '0123456789.'
LOC:Cantidad = vuKeepChars(LOC:Peso,LOC:Chars)

! Listo, el peso esta en la variable LOC:Cantidad
Espero que te sirva este ejemplo

Saludos

Re: Leer datos de una bascula con WinEvent

Publicado: Dom May 26, 2013 3:26 am
por handradev
Con este codigo, ya no necesito el WinEvent?

Re: Leer datos de una bascula con WinEvent

Publicado: Lun May 27, 2013 4:20 am
por Mauricio
Si, necesitás el WinEvent.

Re: Leer datos de una bascula con WinEvent

Publicado: Vie Nov 11, 2016 5:07 pm
por juancarlosguillen
handradev escribió:
gsanchez escribió:

Código: Seleccionar todo

! === Leemos bascula === !
buf                  STRING(1024)
GLO:BasParam = 'COM' & CFG:BasPuerto & ':' & CLIP(CFG:BasVelocidad) & ',' & CLIP(CFG:BasParidad) & ',' & CLIP(CFG:BasDataBit) & ',' & CLIP(CFG:BasStopBit)
! COM1:9600,N,8,1   <-- Ejemplo

! --- Abrimos puerto --- !
pid#  =  NewPort(CLIP(GLO:BasParam),1024,1024)
 
! --- Enviamos identificador a la bascula --- !
! En la mayoria de las básculas hay que enviarle una 'P' para que nos envie el peso
buf = 'P'  !Length = 1
BSent# = WritePort(pid#,buf,1)

ds_Sleep(50)      !Retardamos 1/2 segundo

! --- leemos el peso --- !
BRec# = ReadPort(pid#,buf,0)

! --- Cerramos puerto --- !
ClosePort(pid#)

! En este momento ya tenemos el peso en la variable Buf
! La mayoria de las básculas te devuelve algo como esto: '10.6 Kg'
! es necesario quitarle la palabra Kg yo lo hago con la función vuKeepChars
! de Valutilities; puedes implantar algo con pos/instring
! --- Obtenemos el peso --- !
LOC:Peso = buf
LOC:Chars = '0123456789.'
LOC:Cantidad = vuKeepChars(LOC:Peso,LOC:Chars)

! Listo, el peso esta en la variable LOC:Cantidad
Espero que te sirva este ejemplo

Saludos