TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: DarkVect en 28 de Marzo de 2007, 05:40:06

Título: Problema sincronizando lectura/escritura de un dispositivo con MSComm
Publicado por: DarkVect en 28 de Marzo de 2007, 05:40:06
Hola,

Tengo un dispositivo que se comunica con el ordendor mediante RS-232. He realizado un Form con 3 botones:
1) Envía Chr(10) para poner indicar al dispositivo que se va a pedir información. Éste responde con el mismo caracter para decir que está listo.
2) Envía una cadena para pedirle la información. El dispositivo NO acepta que se le envíe el Chr(10) seguido de la cadena.
3) Lee el búffer de recepción para capturar la información y mostrarla.

El modo de empleo sería: 1, 3, 2, 3 (pedir atención, leer confirmación, pedir información, leer información)

Esto funciona bien y a modo de prueba es perfecto. El problema viene cuando quiero reunirlo todo en UN solo botón que al pulsarlo envíe el Chr(10), espere a recibir el ASCII 10, envíe la cadena para la info y luego la lea.

He probado pnerlo todo seguido y nada. He probado con bucles de espera mientras no haya información en el buffer y tampoco, he intentado usar el OnComm pero NO salta!!

Algún consejo??

Gracias!!

Título: Re: Problema sincronizando lectura/escritura de un dispositivo con MSComm
Publicado por: Marioguillote en 28 de Marzo de 2007, 20:41:16
Hola DakVect

No sé que lenguaje de programación estarás usando, pero en Protón existe para SERIN y SEROUT una instrucción que se llama WAIT, es decir que esperará que suceda un evento en el SERIN (al recibir datos).

The SERIN command can be configured to wait for a specified sequence of characters before it retrieves any additional input. For example, suppose a device attached to the PICmicro is known to send many different sequences of data, but the only data you wish to observe happens to appear right after the unique characters, "XYZ". A modifier named WAIT can be used for this purpose: -

   SERIN PORTA.0 , 16468, [ WAIT( "XYZ" ) , SERDATA]

The above code waits for the characters "X", "Y" and "Z" to be received, in that order, then it receives the next data byte and places it into variable SERDATA.


Es decir que espera a esos caracteres y a lo siguente lo ubica en la variable SERDATA
Lógicamente, dependiendo de lo que haga el SERIN, el programa mandará a actuar al SEROUT adecuadamente.

Espero haber entendido tu inconveniente y te sirva la ayuda.

Saludos
Mario
Título: Re: Problema sincronizando lectura/escritura de un dispositivo con MSComm
Publicado por: BrunoF en 28 de Marzo de 2007, 22:53:50
Hola DarkVect.

Generalmente se hace un gestor con "fuses" para ir avanzando en cada paso.

Acá te paso uno que te hice(perdoná algunas cosas en inglés, pero suelo programar en inglés por un tema de estandarización).

Si no entendés algo me avisás.

Suerte ;)

Título: Re: Problema sincronizando lectura/escritura de un dispositivo con MSComm
Publicado por: DarkVect en 29 de Marzo de 2007, 07:55:01
Hola,

Primero de todo, muchas gracias por responder.

Programo en VB. He conseguido solucionarlo incorporando un Timer entre cada paso. Es decir: envío Chr(10), espero 1ms, leo la confirmación del búffer de entrada, pido la información, espero otro ms y leo la información del buffer de entrada.

Ahora todo funciona con un solo botón como quería. El retardo es de 2ms que para la aplicación es totalmente despreciable.

Pero ahora me ha surgido un nuevo problema... resulta que si cojo el puerto y lo desconecto del dispositivo, la aplicación se me queda "colgada" en el MSComm1.Input esperando a recibir algo y no sale de ahí.

Me planteo otro Timer que al cabo de 1 segundo sin recibir me haga saltar un error diciendo que no hay nada conectado, pero el problema es cómo lo implemento, pués al llegar al MSComm1.Input se queda clavado en esa instrucción y no ejecuta el timer, o eso creo.

Gracias de nuevo por la ayuda.

Un saludo!!
Título: Re: Problema sincronizando lectura/escritura de un dispositivo con MSComm
Publicado por: BrunoF en 29 de Marzo de 2007, 10:39:42
DarkVect: Bajaste el archivo adjunto?
Título: Re: Problema sincronizando lectura/escritura de un dispositivo con MSComm
Publicado por: DarkVect en 29 de Marzo de 2007, 16:00:37
Si me lo he bajado y ya lo tengo todo solucionado, era cosa de temporizar bien cada operación con el serie.

Muchas gracias!!