Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Ayuda con lectura Rs232

Mi problema es el siguiente , todos los comandos funcionan menos el te temperatura que aun no he implementado nada,(ese no cuenta) pero el problema es que cuando intento leer en el buffer por RS232 me aparecen todos los comandos que acabo de introducir al pulsar los botones.

 

Un ejemplo de uso seria -->. Si arranco el programa y pulso una vez "modo laser" luego "modo carga" y luego "trigger interno" cuando pulse en adc me aparecerán todos estos comandos que acabo de pulsar "modo laser" "modo Carga" y luego "Trigger int" antes de aparecer el valor de tensión que busco, y cuantos mas botones pulse mas veces tendré que pulsar el botón de leer para que vayan mostrando todos los comandos introducidos y al final me aparezca el valor que busco.

 

Mirando por el foro he visto que el labview tiene un buffer en el que va guardando todo lo que se envía por el puerto serie, estoy intentando utilizar la instrucción "Visa clear" para borrar el buffer pero cada vez que la pongo antes o después de escribir el comando adc en el puerto, el programa no me hace nada. He observado con una variable que tengo que se llama "Serial Settings:Number of Bytes at Serial Port" que cuanto mas botones pulso mas se va incrementando esta variable, y cuando le doy a leer el buffer esta variable decrece. Os Adjunto el programa. Gracias.

0 kudos
Mensaje 1 de 9
4.165 Vistas

Saludos ferorts,

 

Mira, no se entiende nada del problema que tratas de plantear:

 - Como lees en el buffer por RS232???

 - Que botón "adc" estas pulsando???

 - Que botón "leer" estas pulsando???, es en tu equipo receptor?

 

Te puedo decir que cada vez que oprimes alguno de los botones STANDBY, LASER, CARGA y los TRIGGERS el programa envía correctamente por RS232 la información de cada uno de estos botones, ya lo probé...

 

Jorge N.

0 kudos
Mensaje 2 de 9
4.158 Vistas

Hola Jorge, perdona si no me he explicado bien.

Mi problema es a la hora de recibir por RS232, se supone que cuando le envio el comando "adc" al PIC por Rs232 el me devuleve un numero. Con el Hyperterminal me funciona todo correctamente es con el labview el que me da problemas.

Todo lo demas me funciona bien. es a la hora de pulsar el boton "Nivel de bateria" que manda el comando "adc" al pic. Y aki viene el lio..............

En vez de devolverme el valor que toca me devuelve el primer comando que haya mandado por rs232 desde que inicio el programa, le vulevo a apretar al boton "nivel de bateria" que manda el comando "adc" y me devuleve el segundo comando que haya mandado desde que inicio el programa. Y asi pulsandole sucesivamente al final me saca el nuemro que toca.SI por ejemplo he enviado dos comandos por rs232 al pic para poder leer el valor de la bateria tendre que darle 3 o 4 veces.

Espero haberme explicado mejor.

0 kudos
Mensaje 3 de 9
4.153 Vistas

Por cierto este programa lo unico que hace es interactuar con la placa donde tengo el micro mediante comandos Rs232. Los comandos que solo manda que no reciben nada funcionan todos bien, el UNICO que me da problemas es el de "nivel de bateria" que manda el comando "adc" al micro.

0 kudos
Mensaje 4 de 9
4.152 Vistas

Saludos,

 

Prueba cambiando tu rutina de escritura desde LabVIEW hacia tu micro.  Cambia todo lo que se ve en la figura 1.png por lo que te coloqué en la figura 2.png y vuelve a probar la comunicación a ver.

Hyperterminal envía todos los bytes de manera inmediata, no byte a byte como lo estás haciendo en LabVIEW.

 

Si no funciona, por lo menos te ayuda a simplificar un poco más tu código 🙂

 

Jorge N.

Descargar todos
0 kudos
Mensaje 5 de 9
4.140 Vistas

Gracia Jorge pero sigo teniendo el mismo problema. Cada vez qie le doy al boton de Nivel de bateria me aparece el primer dato que he mandado por Rs232 al PIC desde que inicio el programa.

Y si al iniciar lo primiero que hago es pulsar el boton de nivel de bateria si que me funciona.

0 kudos
Mensaje 6 de 9
4.095 Vistas

Saludos,

En tu código de LabVIEW cuando haces un envío luego de cada comando hay un "Carriage Return".  Cuando escribes los comandos en el hyperterminal tambien le das a la tecla "enter" luego de cada comando?.

Aparte de ese detalle no hay nada más que indique una diferencia entre enviar con LabVIEW o con Hyperterminal...

 

Jorge N.

 

 

PD: Porque envías tantas letras a tu micro?, podrías enviar un solo número que represente cada modo y así te ahorras unos cuantos bytes en el envío...

0 kudos
Mensaje 7 de 9
4.061 Vistas

Lo de las letras tienes razon, lo que pasa que en principio no pense en utilizar labview y unicamente hacer el control mediante comandos enviados por rs232, por eso los comandos tienen nombres tan largos, mas o menos intuitivos. Pero no me cuesta nada poner numeros en vez de cadenas de caracteres, ahora me pondre a ello.

Respecto lo del retorno de carro lo implemente en labview ya que si no me funcionaba, por que hasta que no envio un retorno de carro el PIC no recone que se ha terminado de escribir el comando.

Ya no se que hacer con el problema de la lectura,quiero borrar el buffer de labview antes de ejecutar el comando que me da problemas. Pero no consigo implementarlo bien.

0 kudos
Mensaje 8 de 9
4.051 Vistas

Quizá este thread te pueda ayudar...

 

http://forums.ni.com/t5/LabVIEW/Empty-serial-port-buffer/m-p/87156

 

 

Jorge N.

0 kudos
Mensaje 9 de 9
4.011 Vistas