Progress - Comunicacion con serial

   
Vista:

Comunicacion con serial

Publicado por Alvaro Duarte (13 intervenciones) el 20/10/2009 19:40:30
La idea es que tengo una bascula conectada al serial del computador, y necesito leer este puerto com1 desde progress para tomar el peso, la bascula se setea para que envie el peso automaticamente, pero como hago para capturar ese peso en una variable??, ya registre el mscomm32.ocx y ya lo inserte en un windows, pero no se que hacer con esto.
Agradezco inmensamente al que me pueda ayudar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Comunicacion con serial

Publicado por CHARLY (22 intervenciones) el 23/10/2009 22:47:32
/*------------------------------------------------------------------------------
Purpose: inicializar el control mscomm32.ocx para que abra el puerto
adecuado con los parametros indicados en este caso yo lo manejo asi:
[Bascula]
PUERTO=com2
PUERTOCONFIG=9600,8,n,1
;BAUD=9600
;PARITY=No
;STOPBITS=1
;DATABITS=8
Parameters: <none>
Notes:
------------------------------------------------------------------------------*/
DEFINE VAR vPORT AS CHAR NO-UNDO.
DEFINE VAR vPORTCONFIG AS CHAR NO-UNDO.
DEFINE VAR vPortNumber AS INTEGER NO-UNDO.

GET-KEY-VALUE SECTION "Bascula"
KEY "PUERTO"
VALUE vPort.
IF vPORT = ? THEN DO:
PUT-KEY-VALUE SECTION "Bascula" KEY "PUERTO" VALUE "COM2".
ASSIGN vPORT = "COM2".
END.
ASSIGN vPortNumber = INTEGER(SUBSTRING(vPORT, 4, 1)) NO-ERROR.
IF ERROR-STATUS:ERROR THEN DO:

END.
MESSAGE vPortNumber.
GET-KEY-VALUE SECTION "Bascula"
KEY "PUERTOCONFIG"
VALUE vPortConfig.
IF vPortConfig = ? THEN DO:
PUT-KEY-VALUE SECTION "Bascula" KEY "PUERTOCONFIG" VALUE "9600,8,n,1".
ASSIGN vPortConfig = "9600,8,n,1".
END.

ASSIGN chCtrlFrame:CommPort = vPortNumber
chCtrlFrame:SETTINGS = vPortConfig.

ya una vez que tienes configurado el puerto comm haces lo siguiente

en este caso tengo un bascula muy comun tore----

y para mandar y recibir la informacion se hace de la siguiente manera


DEFINE VAR vd-capturapeso AS CHAR NO-UNDO.

IF NOT chCtrlFrame:MSComm:PortOpen THEN
ASSIGN chCtrlFrame:MSComm:PortOpen = TRUE.

PAUSE 0.

ASSIGN
chCtrlFrame:MSComm:OUTPUT = "P"
vCaptura = chCtrlFrame:MSComm:INPUT.

ESPERO QUE TE SEA DE UTILIDAD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comunicacion con serial

Publicado por Alvaro Duarte (1 intervención) el 26/10/2009 17:33:29
Charly muchas gracias pero sigo con el problema, el error que genera ahora es
"Ek PUT-KEY-VALUE fallo" (4454)
Lo que hice fue registrar el MScomm32.ocx y abri una ventana inserte el ocx y coloque un boton para que llame el peso en ese boton le coloque el codigo que usted dijo:

DO:

DEFINE VAR vd-capturapeso AS CHAR NO-UNDO.
DEFINE VAR vPORT AS CHAR NO-UNDO.
DEFINE VAR vPORTCONFIG AS CHAR NO-UNDO.
DEFINE VAR vPortNumber AS INTEGER NO-UNDO.

GET-KEY-VALUE SECTION "Bascula"
KEY "PUERTO"
VALUE vPort.
IF vPORT = ? THEN
DO:
PUT-KEY-VALUE SECTION "Bascula" KEY "PUERTO" VALUE "COM1".
ASSIGN vPORT = "COM1".
END.
ASSIGN vPortNumber = INTEGER(SUBSTRING(vPORT, 4, 1)) NO-ERROR.
IF ERROR-STATUS:ERROR THEN
DO:

END.

GET-KEY-VALUE SECTION "Bascula"
KEY "PUERTOCONFIG"
VALUE vPortConfig.
IF vPortConfig = ? THEN
DO:
PUT-KEY-VALUE SECTION "Bascula" KEY "PUERTOCONFIG" VALUE "9600,8,n,1".
ASSIGN vPortConfig = "9600,8,n,1".
END.

ASSIGN
chCtrlFrame:CommPort = vPortNumber
chCtrlFrame:SETTINGS = vPortConfig.

IF NOT chCtrlFrame:MSComm:PortOpen THEN
ASSIGN chCtrlFrame:MSComm:PortOpen = TRUE.

PAUSE 0.

ASSIGN
chCtrlFrame:MSComm:OUTPUT = "P"
vd-capturapeso = chCtrlFrame:MSComm:INPUT.

MESSAGE vd-capturapeso
VIEW-AS ALERT-BOX INFO BUTTONS OK.
IF chCtrlFrame:MSComm:PortOpen THEN
ASSIGN chCtrlFrame:MSComm:PortOpen = FALSE.

END.

Este es loq eu le coloque en el trigger del boton.

Agradezco cualquier ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comunicacion con serial

Publicado por CHARLY (22 intervenciones) el 03/11/2009 00:46:11
vamos a realizarlo de manera normal

DO:

DEFINE VAR vd-capturapeso AS CHAR NO-UNDO.

ASSIGN
chCtrlFrame:CommPort = "COM1"
chCtrlFrame:SETTINGS = "9600,8,n,1".

IF NOT chCtrlFrame:MSComm:PortOpen THEN
ASSIGN chCtrlFrame:MSComm:PortOpen = TRUE.

PAUSE 0.

ASSIGN
chCtrlFrame:MSComm:OUTPUT = "P"
vd-capturapeso = chCtrlFrame:MSComm:INPUT.

MESSAGE vd-capturapeso
VIEW-AS ALERT-BOX INFO BUTTONS OK.
IF chCtrlFrame:MSComm:PortOpen THEN
ASSIGN chCtrlFrame:MSComm:PortOpen = FALSE.

END.

espero que sea mas sencillo asi realiza una prueba y me comentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comunicacion con serial

Publicado por Alvaro Duarte (13 intervenciones) el 30/11/2009 20:24:55
Gracias Charly, pero nada no funciona no lee la baascula y si se que esta funcionando poruque si me omunico con hyperterminal si leee lo que arroja la bascula. Una pregunta seria para que envia la P? chCtrlFrame:MSComm:OUTPUT = "P"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Comunicacion con serial

Publicado por charly (22 intervenciones) el 14/12/2009 23:32:32
si es de esa manera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar