From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

cortar cadena recibida por puerto serie en bloques de 3 (X Y Z)

Hola a todos, estoy realizando mi proyecto de fin de carrera de ingenieria tecnica electronica y estoy elaborando la aplicacion en labview y tengo algunas dudas que por mas que busco en el foro no encuentro solucion completa. Mi problema es el siguiente, el microcontrolador envia 3 valores X Y Z separados por comas como podemos ver en la captura de hyperterminal pero en labview el salto de linea no me lo hace y la cadena no siempre es del mismo tamaño va variando segun recibe la cadena de entrada por el puerto serie, ya que no me detecta el \n\r que me detecta el hyperterminal y hace saltar a nueva linea y retroceder el carro. He probado con el scan from string y algunos pero como la longitud de la cadena cambia supongo que habra que hacer como un empaquetado de datos de 3 en 3. 

 

Por otro lado no se cual seria la forma mas optima para realizar el estudio de los datos para que cada componente fuera en una columna (quizas con un array de 3x1).

 

Muchas gracias 

 

Un saludo

 

 

0 kudos
Mensaje 1 de 4
5.501 Vistas
El ScanForTokens podría ayudarte en dividir la cadena en elementos ya que no se basa en la longitud de los elementos sino que utiliza un carácter predeterminado para dividir la cadena: mira al vi anexo.


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?
Mensaje 2 de 4
5.488 Vistas

Muchas gracias por su respuesta, es otra opcion que probé en su dia y efectivamente me divide la cadena pero no me las agrupa en 3 arrays independientes ya que necestio todas las X en un array todas las Y en otro y todos las Z en el suyo. De esta forma obtendria los angulos X Y Z en 3 arrays diferentes que irian refrescando o actualizando el nuevo valor recibido por puerto serie. No se si el problema seria que el array debe de ser de dimension 3 para que la cadena leida pueda almacenar de la siguiente forma 

x y z 40.5 50.8 98.7 41.2 48.9 74.2 43.4 45.5 43.7

 

 

Muchas gracias por su ayuda 

  

0 kudos
Mensaje 3 de 4
5.444 Vistas

Ya lo he solucionado de la siguiente forma:

1º le hago un Match pattern para extraer la parte de la cadena que me interesa 

2º cambio el "." que me envia  el microcontrolador por una "," que es lo que me detecta Labview como flotante

3º convierto a numero quitandole la parte de la x: me diante un offset de 2 caracteres

Ahora la cuestion es si podre representar en una misma waveform chart los 3 valores numericos finales

 

Muchas gracias por su ayuda

 

Un saludo

 

 

Captura Funcionando.JPG

0 kudos
Mensaje 4 de 4
5.435 Vistas