el 05-10-2011 11:54 AM
Hola , en primer lugar pedir disculpas por que le di a la opcion de problema resuelto sin darme cuenta, no es mi intencion llenar el foro con post del mismo tema, pero la solucion que en un principio pense que funcionaria no ha sido asi, mi problema es que quiero mandarme a un PIC16F886 una serie de comandos por Rs232, y como llevo muy poco tiempo con el labview voy bastente pez,,,,,, ya tengo el programa del micro funcionando perfectamente y lo pruebo por el hiperterminal de windows y funciona bien, lo que pasa es que quiero hacer que cada vez que aprieto un boton (un boton boleano para cada comando) me mande por Rs232 un comando del tipo "mode_laser" o "mode_standby" o algo asi, de momento solo he conseguido que me mande solo un comando cada que ejecuto el programa en modo run, mi problema es que despues de arrancar y mandar el primer el comando es como si se quedara colgado el pic, os adjunto el *vi por si me podeis decir en que estoy metiendo la pata.
Estoy usando una estructura del tipo swicht case que me recomendo un compañero forero ya que no sabia como hacer el programa para poder tener la opcion de mandar mas de un comando.
Gracias.
el 05-10-2011 12:20 PM
Hola:
Indicarte algunas cuestiones:
- Tal como has hecho el programa está continuamente escribiendo el comando y solamente lees los datos cuando das a la opción leer. Sería bueno hacer el proceso escribir comando y leer datos con un solo boolean.
- La escritura no es necesario hacerla letra por letra, se puede hacer todo el comando de una vez.
- En el bucle es bueno poner una función White que espere 100ms o algo así para no sobrecargar el procesador.
- Te recomiendo que solo se envíe el comando cuando se accione un control booleano (y que además espere la respuesta y la lea para descargar el buffer).
Espero que esto sea de ayuda. Saludos.... Moisés
el 05-10-2011 12:45 PM
Hola ferorts,
Estuve revisando tu VI y tengo algunos comentarios:
- ¿Conoces los registros de desplazamiento (Shift Registers)? Son elementos que se utilizan para guardar información de la iteración anterior del ciclo. Te recomiendo que coloques registros de desplazamiento para la terminal de error. Puedes encontrar más información acerca de los registros de desplazamiento en esta liga:
http://zone.ni.com/devzone/cda/tut/p/id/7592
Aquí también puedes encontrar información acerca de la temporización que menciona moisan.
- No necesitas separar el string para escribirlo.
- Necesitas colocar un delay entre la escritura y la lectura.
- No configuraste ningun parámetro cuando creas el recurso de VISA (baudrate, parity, stop bits, etc). Revisa que los parámetros que LabVIEW utiliza por default sean los correctos para que la comunicación entre el PIC y LabVIEW se haga correctamente.
- El siguiente ejemplo muestra la comunicación básica por puerto serial. Rervísalo porque es muy similar a tu VI.
- Una vez que hayas revisado los puntos anteriores, puedes probar que el VI funciona correctamente al probarlo con hiperterminal de Windows, tal como lo hiciste con el programa del PIC, para comprobar que funciona correctamente.
Espero que la información te sea de utilidad. Si tienes algun problema no dudes en escribirme por este medio.
Suerte!
Héctor Rojas
el 05-10-2011 04:19 PM
Para hacer eso tienes que poner botones para cada comando y ponerlos con la accion mecanica de latch para que solo se mande el comando una vez cada que presiones el boton, y no como ahorita que se manda muchas veces y eso ha de ser lo que hace que no funcione la comunicación. Te mando un VI para que veas como lo podrias hacer.
el 06-06-2011 04:28 AM
el 06-06-2011 04:30 AM
el 06-06-2011 04:40 AM
Ahora si que adjunto el archivo con el programa.