LabView - Separacion de caracteres

 
Vista:

Separacion de caracteres

Publicado por Leopoldo (20 intervenciones) el 14/07/2006 19:41:33
Estoy empezando con labview de manera autodidacta y estoy desarrollando una aplicacion para enviar una secuencia de caracteres ASCI por puerto serie pero necesito que dichos caracteres esten espaciados por un tiempo ajustable ya que el receptor si le entran a demasiada velocidad no se entera y no encuentro el modo de hacerlo, cualquier ayuda sera bienvenida
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Separacion de caracteres

Publicado por Edgar Muñoz (108 intervenciones) el 14/07/2006 23:03:07
Puedes utilizar un String Length, un For Loop y un String Subset. Además de las funciones VISA.

Primero determinas la longitud del String (es aquí donde están los datos que deseas transmitir) con el String Length, luego conectas este valor al terminal de conteo del For Loop (el terminal con la letra N).

Colocas el String Subset en el interior del For Loop y conectas el String al terminal string, conectas el terminal de iteración (el terminal con la letra i del For Loop) al terminal offset y en el terminal length creas una constante con valor 1. Conectas el terminal de salida substring al terminal de entrada write buffer del VISA Write. Dentro del For Loop también debes colocar un timer que fijará el tiempo entre dato y dato transmitido.

Asegúrate que el VISA Configure Serial Port.vi y el VISA Close estén por fuera del For Loop (para que el puerto se abra y se cierre sólo cuando inicia y finaliza la ejecución del programa). No te olvides de desactivar el indexado de las líneas que salen del For Loop.

Espero que te sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Separacion de caracteres

Publicado por Leopoldo (20 intervenciones) el 14/07/2006 23:54:39
Muchas gracias por responder, lo probaré y ya te contaré que tal me ha ido, antes debo descifrar tus pistas.
Agradecido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Separacion de caracteres

Publicado por Leopoldo (20 intervenciones) el 14/07/2006 23:59:37
Entiendo que para ajustar la separación de caracteres que se envian debo de poner dentro del for loop un "wait until next" ¿estoy en lo cierto?
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Separacion de caracteres

Publicado por Leopoldo (20 intervenciones) el 15/07/2006 00:06:45
Parece que funciona pero se me olvido decirte que al terminar de enviar el último caracter debe de parar hasta que introduzca una nueva cadena con un string combo ya que con lo que hago despues de finalizar vuelve a empezar.
Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Separacion de caracteres

Publicado por Edgar Muñoz (108 intervenciones) el 15/07/2006 00:42:47
Inserta un Stacked Sequence Structure y coloca en su interior todo lo creado hasta el momento.

Haces click derecho sobre el borde del Stacked Sequence Structure y seleccionas Add Frame After y allí colocas un While Loop creas un control (stop) en el terminal condicional (el terminal de color rojo del While Loop).

Cuando finalice el envío del paquete de datos el programa se detendrá en el While Loop hasta que se presione el botón stop. Puedes aprovechar esta condición para ingresar (o seleccionar) un nuevo conjunto de datos y luego que los hayas seleccionado presionas el botón stop (puedes cambiarle el texto y el label).

Te explico

El Stacked Sequence Structure forza a que las tareas se ejecuten en forma secuencial, es decir, primero se ejecuta el subdiagrama del Frame 0, luego el del Frame 1 y así sucesivamente. En este caso hacemos que se ejecute primero la transmisión de datos y luego ejecutamos un lazo hasta que se presione un botón, luego el proceso se repite (si utilizas ejecución continua).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Separacion de caracteres

Publicado por Leopoldo (20 intervenciones) el 15/07/2006 11:23:15
No quisiera abusar de tu gratitud pero te explico....

Lo que me has dicho que haga es practicamente lo que necesito pero tiene la pega de que cuando pulso stop se detiene la ejecucion del programa y no es eso lo que necesito,quizas deberia darte una descripción de lo que pretendo.

Se trata de un programa de comunicación utilizando el puerto serie, cuando se ejecuta el programa, este debe de estar leyendo el puerto continuamente a no ser que pulse enviar con lo cual envia los datos de la manera que ya sabes hasta que sale el ultimo y se queda recibiendo de nuevo. Los datos que envio proceden de un combo box. Lo de que solo envíe cuando pulso enviar se me ocurre implementarlo con un case.

Muchas gracias por tu generosa ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Separacion de caracteres

Publicado por Edgar Muñoz (108 intervenciones) el 17/07/2006 21:00:07
Lo del case me parece bien, pero debes utilizar el control booleano con Latch, esto se configura haciendo click derecho en el control en el panel frontal, luego elijes Mechanical Action y luego cualquier acción con Latch. De esta forma los datos se enviarán una sola vez cada que presiones el botón.

El programa que tienes hasta ahora funciona bien si lo ejecutas continuamente. Si quieres evitar esto puedes encerrar todo el código (me refiero al diagrama de bloques) que tienes hasta el momento en un While Loop y creas un control (stop o stop 2 o algo así). El programa se ejecutará hasta que presiones el botón.

Si vas a estar leyendo el puerto todo el tiempo, la ejecución va a tardar un poco más, el tiempo de ejecución va a depender del valor que hayas fijado en la propiedad timeout del VISA Configure Serial Port.vi (el valor por defecto es 10000 ms o sea 10 segundos). Puedes ajustar este tiempo de acuerdo a tus necesidades.

No te olvides de ubicar el VISA Configure Serial Port.vi y el VISA Close por fuera del While Loop.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar