LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Al leer los datos en el panel del RS232 se borran los anteriores

Hola amigos: Os adjunto el programa que he hecho, con su .uir. El problema que tengo es que cuando escribo el numero de pasos a mover y la velocidad, las instrucciones que se leen luego en el TEXTBOX de LEER del RS232 solo me lee el ultimo movimiento. Los pasos a seguir son: primero escribir el numero de pasos, la velocidad, y dar a mover, Envía las dos instrucciones al device conectado por el RS, pero solo me lee el movimiento del ultimo motor si muevo mas de uno. ¿Como hago para que lo lea todo?

 

Si lo hago de uno en uno sí lo lee bien, pero no si hago más de uno.

Con el botón OK se va al panel del RS donde se ve si se lee o no.

Si no me he explicado contestadme tambien, Gracias

Download All
0 Kudos
Message 1 of 13
(5,463 Views)

Hola motores, no entiendo cómo haces a enviar las instrucciones para más que un motor a la vez, a no ser que haya equivocado u pregunta.

Sin embargo puedo darte algunas sugerencias para mejorar tu programa, a ver si esto también te sirva para solucionar tu problema.

 

Primero, en todas las routinas MOVERn tienes incorporadas dos directivas if (event == EVENT_COMMIT) que no sirven ya que están dentro del caso EVENT_COMMIT de un switch.

Segundo: cada vez que pulsas un botón "Move" vas abriendo el puerto, pero nunca lo vas cerrando: después de la primera vez la OpenComConfig terminará en error porque el puerto ya está abierto (tú has escondido el error con el DisableBreakOnLibraryErrors pero indudablemente lo hay): esto va a significar también que aunque quieras modificar los parámetros del puerto, esto no se realizarà nunca.

Ten en cuenta, además, que cada vez cargas el panel de configuración del puerto con un LoadPanel y lees los parámetros de él: de esta manera vas cargando los parámetros establecidos por defecto en el panel (pon un breakpoint después del GetConfigParms ( ) para ver el contenido de la variable comport). Deberías modificar esta parte para que se abra el puerto solamente una vez y no en las routinas de MOVER. Si en un momento quieres modificar los parámetros del puerto debes anteriormente cerrarlo y despuén abrirlo nuevamente con los nuevos parámetros.

 

Por lo del ver todos los parámetros que vas enviando al motor, cada vez que llamas al ResetTextBox el texto precedentemente cargado en el control se borra y se substituye por lo que pasas a esta instrucción: esto puede ser el motivo porque no ves el texto. Sin embargo, puesto que tu vas leyendo la texbox para enviarla al motor no veo una  manera fácil de solucionar a este asunto.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 2 of 13
(5,455 Views)

Gracias Roberto, te seguiremos informando de nuestro progreso.

PD: siento escribir el mismo dos veces pero a veces me da error al enviar el post y no lo envía, me lo envía luego dos veces.Me podrías explicar otra vez lo de cerrar el puerto despues de enviar los datos?no me ha quedado muy claro, Gracias

0 Kudos
Message 3 of 13
(5,451 Views)

Roberto, hemos cambiado una cosa a ver si la hemos hecho bien. Hemos quitado todos lso config_handle=LoadPanel(0,"serial.uir",CONFIG); de los callback MOVERn, y hemos puesto ese LoadPanel en GetConfigParms; Lo que no te hemos entendido es lo de como cerrar el puerto al darle a MOVE, ¿Hay que poner CloseCom?¿Donde?Te adjunto el .c modificado. Muchas gracias majo

0 Kudos
Message 4 of 13
(5,449 Views)

na cosa más ROberto. Es del segundo apartado de mi duda inicial. Lo de leer los datos despues de pulsar dos "Move" diferentes. Hemos hecho esto.

 

sprintf=(mensaje,"\nX ma %0.f",x);

sprintf=(mensaje2,"\nVI %0.f",y);

Y hemos quitado los ResetTextBox

Quedaria asi.

Te adjunto el .c y el .uir otra vez vale?

LE echas un vistazo?Gracias

Download All
0 Kudos
Message 5 of 13
(5,445 Views)

He estado revisando tu projecto y he añadido algunas modificaciones y comentarios: míralo y si tienes dudas y comentarios postealos aquí.

Suerte



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 6 of 13
(5,431 Views)

Hola Roberto, muchas gracias por tu ayuda, ha sido muy útil pero aún nos queda una cosilla. En el TEXTBOX_READ nos triplica lo enviado cuando le damos al botón STOP. Es decir, al pulsar MOVE envío un dato, luego le doy al botón de emergencia STOP, y al leer me lee 3 veces lo enviado. Por ejemplo:

Enviamos al dar a MOVE los siguientes instrucciones X ma 1 SL 2. Luego le damos a STOP (envía PS), le volvemos a dar para reanudar el programa (envia RS).

Al darle a LEER deberia leer: X ma 1 SL 2 PS RS pero en lugar de eso nos lee X ma 1 SL 2 X ma 1 SL 2 PS X ma 1 SL 2 PS RS.

TE adjunto el .c modificado a ver si nos puedes echar otro cable.

Gracias otra vez

0 Kudos
Message 7 of 13
(5,415 Views)

No entiendo lo que pasa. Integré tu nueva fuente en el proyecto, conecté un loopback (un conector serie con los pines 2 y 3 entrecortados) y hice lo siguiente:

 

1. Configurar al puerto

2. Mover al motor x (pasos 10; velocidad 20)

3. Pulsé Stop y luego Start

4. Indiqué que no hubiera terminación al leer la serial (simplemente para leer todo en una vez sola: con terminador pasa lo mismo pero debo leer tre veces)

5. Le dí a Leer y obtuve: X ma 10 SL 20 PS RS y nada más

 

¿Puede que haya algo en el dispositivo conectado que refleja los mensajes más que una vez?



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 8 of 13
(5,407 Views)

Hola Roberto:

La verdad es que no entiendo muy bien tu pregunta. Lo que has hecho, en principio es la idea que tiene que realizar. Nosotros queremos mandar esas instrucciones (X ma SL PS RS...) a un motor. ME explico. Nosotros ponemos esas instrucciones en los recuadros de pasos movidos y velocidad, le damos a MOVE, y el motor se tendría que mover. ¿Lo que se lee es lo que llega al motor?es decir,¿Se moverá el motor al enviar esas instrucciones?

 

0 Kudos
Message 9 of 13
(5,400 Views)

Es posible que sea yo el que no ha entendido, creía que ya estabas seguro de que los comandos son correctos...

¿Qué tienes conectado a tu PC? Y ¿estás maniobrando a los motores o no? ¿Como es que se te reflejan los comando en el canal de ingresa del puerto serial?



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 10 of 13
(5,397 Views)