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.
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.
el
07-29-2015
07:22 PM
- fecha de última edición
02-05-2024
11:46 AM
por
NI_Community_Su
Buen día, hice una pregunta parecida a esta en otro foro, pero al final el tema se salio de rumbo.
Estoy recibiendo datos hexadecimales por el puerto ethernet de mi instrumento de forma correcta y sin errores. Configuré mi instrumento en el MAX con la opción Manual Entry Raw Socket, debido a que las primeras dos opciones no me detectaba el instrumento de forma automática.
Los datos que recibo siempre será un numero del 1 al 4, luegoun delimitador (coma) y luego el valor hexadecimal.
Quiero separar estos dos datos. El primer numero del 1 al 4 me indicará de cual instrumento proviene el dato, y el otro dato despues del delimitador me indicará el numero de serie.
Tengo este codigo, y me funciona solo cuando recibo un solo dato:
Sin embargo, cuando recibo mas de dos datos, solamente me separa la primera trama, y el resto me lo mantiene con todo y delimitador, como se ve en la imagen:
El resultado que quiero obtener sería algo como esto:
He intentando con varias de las funciones para Strings y no logro dar con lo que quiero. No sé si deba realizar algun tratamiento previo del dato antes de realizar la operación de "separación".
Tengo mi instrumento configurado "LF" como line ending, con la opcion de configurarlo como None o CRLF.
Como delimitador utilizo la coma, con opcion de utilizar espacio o Tab.
Gracias de antemano por la respuesta.
el 07-29-2015 11:50 PM
Hola Norberto,
creo que el foro a que te refieres es esto, sin embargo veo que todavía tienes el código original sin ninguna de las modificaciones que te sugerí.
¿Has intentado modificar el código? ¿Què te salió?
el
08-01-2015
10:55 AM
- fecha de última edición
02-05-2024
11:45 AM
por
NI_Community_Su
Estimado Roberto, en efecto me refiero a ese foro. En aquel foro te respondí los resultados de la modificación que me recomendaste. Subí la imagen del codigo original porque era el que tenía a mano, pero sí hice las modificaciones.
Abrí este nuevo foro con otro titulo para ver si encontraba alguna diferencia.
el 09-01-2015 09:36 AM
Que tal nguardia Buenos días,
Lo que está pasando es que cada que corres la función de VISA Read estás leyendo todo lo que está en el Bus de datos de serial y ahí están todos los mensajes por lo que lees todo el string y la función solo separa la primera coma que encuentra.
Te recomendaría leer hacer la separación y luego borrar el bus de VISA. Una vez que hagas esto te recomiendo guardar el resultado previo de el mensaje que separaste en un Shift Register en las orillas del ciclo While para que mantengas todos los mensajes que has mandado.
Con esto puedes corregir los detalles que estás encontrando actualmente en tu programa.
Saludos
el 09-01-2015 11:57 PM
Hola Norberto, buenas noches.
Talvez te pueda servir algo como esto:
Nomas la salida de la lectura del serial la conectas a "Lectura Original", y las salidas del While serán lo que tu estas esperando.
Espero te sea de utilidad, sino seguimos buscando como ayudarte,
Saludos.
el 09-20-2015 12:57 PM
Manuel, implementé y ejecute tu codigo y hace la funcion que estaba buscando. Sin embargo, solo me muestra los resultados finales una vez que detengo y vuelvo a iniciar el programa. O sea, cuando termina el ciclo while. He estado intentando de que me muestre el resultado en tiempo real, ya que si se detiene el codigo el programa no sería funcional.
Si tienes alguna otra recomendación te lo agradecería.
Un saludo.
el 09-21-2015 10:26 PM
Que tal nguardia Buenas Noches,
Recuerda que LabVIEW se rige por lo que conocemos como DataFlow o Flujo de Datos lo que nos indica que no tendremos información a la salida de un Nodo hasta que se termine de ejecutar lo que está dentro del nodo, de la misma manera un nodo no se puede ejecutar hasta que tenga todas sus entradas disponibles.
En este caso en particular el nodo es el ciclo while y tus indicadores son el resultado del ciclo while por lo que no se actualizarán hasta que se detenga este ciclo. Si quieres ver los resultados en cada iteración del Ciclo solo tienes que mover los indicadores de tus datos Strig dentro del ciclo while.
Espero que sea de ayuda.
Cualquier otra pregunta estamos a la orden
Saludos