estado del puerto de comunicaciones

143 views
Skip to first unread message

DIEGO

unread,
Mar 1, 2023, 12:32:50 PM3/1/23
to Comunidad de Visual Foxpro en Español
Tengo una app. que se conecta a una bascula por puerto serie, libreria MScomm.

En su formulario  de nivel superior, abro el puerto.
thisform.mscom.portopen = .t.
Hago las tareas que debo hacer.

Desde un boton, llamo a otro  formulario que se abre dentro del anterior, en este boton, cierro el puerto y llamo al formulario.

En este formulario tengo que volver a comunicarme con el puerto serial.
Entonces, debo volver a abrir el puerto.

La pregunta es, como puedo hacer para tener una sola instancia del puerto serial y poder leer el resultado de Thisform.MScom.Input , desde cualquier lugar de la aplicacion.

Sucede que al tener tantas instancias de la comunicacion,  los resultados del imput los manejo con timer´s  y volcando a textbox que el usuario me genera conflicos de apertura o lectura de los puertos haciendo foco en los distintos form activos.

Gracias por vuestras opiniones y consejos.



Oscar Bonet

unread,
Mar 2, 2023, 7:17:43 AM3/2/23
to Comunidad de Visual Foxpro en Español
pregunta si el puerto está abierto, es algo como abrir la puerta de la casa si ya está abierta? 

IF  thisform.mscom.portopen = .F.
       thisform.mscom.portopen = .T.
ENDIF 

DIEGO

unread,
Mar 2, 2023, 8:20:34 AM3/2/23
to Comunidad de Visual Foxpro en Español
La logica es correcta, pero el puerto lo abro y esta accesible en un formulario, cuando necesito acceder en otro formulario difrente aparece el conflicto. porque el objeto mscom que lo abrio, esta en solo 1 formulario.

José Antonio Peña Martínez

unread,
Mar 2, 2023, 9:54:59 AM3/2/23
to publice...@googlegroups.com
Lo puedes abrir cuantas veces quieras, siempre y cuando este cerrado, es decir, cierralo antes de abrirlo ... como ya te dijeron, si en otro formulario lo ocupas instalas otro objeto comm, solo que no lo puedes dejar abierto, trae el peso, y cierralo ...y luego usas el otro formulario y lo abres y lo cierras siempre, aunque siendo sincero no se en tu logica porque tener dos formularios abriendo el mismo comm

Saludos!

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/afb2237b-a30f-46ce-9e00-688f312dd2cbn%40googlegroups.com.


--
Desarrollo de Sistemas TecnoPro
José Antonio Peña

Saludos!

DIEGO

unread,
Mar 2, 2023, 11:21:53 AM3/2/23
to Comunidad de Visual Foxpro en Español
Gracias Jose por la opinion.
Mi error esta en que abro el puerto al iniciar el formulario y lo cierro al salir.

Voy a cambiar esto, por programarlo en un timer, si esta cerrado lo abro, leo y cierro,si esta abierto, simplemente leo y cierro.

Lo utilizo abierto en 2 formularios distintos, porque el monitor de la bascula no se encuentra en la oficina, entonces emulando un monitor, tengo el formulario principal indicando el estado de la bascula.

Es un dato importante porque si al momento de iniciar el pesaje ( el camion sube)  la bascula no esta en 0.00, se generan diferencias que no existen.

El segundo formularo que debo abrir al momento de la maniobra,  se declaran los datos del camion, chofer hora de ingreso, etc.etc. y se guardan en una tabla el pesaje.

Lo mismo ocurre con un tercer formulario, cuando es el momento de la salida.

De todas formas, creo que se debe poder abrir el puerto al iniciar una aplicacion y cerrarlo al salir, teniendo el resultado de la lectura en alguna variable o tabla, en este momento me encuentro mas cerca de resolverlo con los timer´s , pero no me voy a quedar con esta intriga y voy a intentar buscarle una solucion mas facil de mantener.

Gracias por el aporte.

ZeRoberto

unread,
Mar 2, 2023, 11:28:28 AM3/2/23
to publicesvfoxpro
Y si pones el activex en el screen?

Saludos

Ze


Daniel Sánchez

unread,
Mar 2, 2023, 12:26:12 PM3/2/23
to publice...@googlegroups.com
Podrias crear una clase que se encargue de ver si esta abierto el puerto leer los datos y demás la cual la instancias en una variable global y esta la puedes invocar desde cualquier otro formulario, así tendrías centralizada y en un único controlador el manejo de la báscula.



--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software SAC
Móvil y WhatsApp +051-949398047 / Móvil 948615385
Trujillo - Perú

P  Sugerimos no imprimir este e-mail a menos que sea absolutamente necesario. Protejamos el medio ambiente.

José Antonio Peña Martínez

unread,
Mar 2, 2023, 12:51:11 PM3/2/23
to publice...@googlegroups.com
Bueno es sencillo, las básculas pueden usar una torreta indicando el peso, allí es donde se monitorea y el programa lo manejas con un solo formulario ... bueno es mi opinión, pero ya vas encaminado a la solución.

Saludos!

Octavio Rodriguez

unread,
Mar 6, 2023, 4:19:35 PM3/6/23
to publice...@googlegroups.com
Crea un proyecto solamente para estar sensando  la báscula  (leyendo el puerto) , y correlo en segundo plano, el peso que obtengas lo envías a un campo/tabla, y desde el proyecto principal donde tienes el monitor emulando solo vas y lees ese campo/tabla.

Saludos!

Reply all
Reply to author
Forward
0 new messages