Discusiones sobre Productos NI

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

Pasar de string a binario + concatenación de bytes

Hola gente! Buenos días!

 

Soy un estudiante de telecos y necesito usar el Labview para un proyecto pero la verdad es que nunca antes lo había usado y me pierdo a ratos, aunque voy haciendo. La cosa está que ahora me he quedado un poco encallado!:'(

 

Mi problema es que transmito 32 bits por RS232 (de 8 en 8), pero claro cuando recibo en el Labview, recibo los datos en forma de string... Hay alguna manera de recibir esos datos en binario? O en su defecto, hay alguna manera de convertir ese string a binario? Es que aún no he encontrado la fórmula para hacerlo...

 

Y por último hay alguna manera de volver a ajuntar esos 32 bits? Había leído aquí en NI un artículo que decía que se podía hacer con una función del Labview que se llamaba "Type cast", incluso te ponían una imagen. Pero en mi Labview el resultado de la función "Type Cast" es un string, a diferencia del resultado del ejemplo que ofrecían en esta web que era numérico.

 

Si alguien pudiera ayudarme, estaría muy agradecido!

 

Gracias por todo y a todos.

 

Saludos! =D

0 kudos
Mensaje 1 de 7
14.243 Vistas

Buenos días XaNtY,

 

     Creo que la mejor manera para concatenar los strings que llegan por el puerto serie es utilizar la función 'Concatenate Strings'. Puedes apoyarte en un registro de desplazamiento para añadir los 4 strings de 8 bits a la cadena. Para que Type Cast realice la conversión a numérico has de indicarle el tipo de datos al que queires convertir el string por el input de la parte superior. Supongo que en este caso lo más apropiado sería U8, aunque no lo sé con certeza. Los dos pantallazos adjuntos pueden servirte de referencia.

 

     Un saludo,

David Oña
Descargar todos
0 kudos
Mensaje 2 de 7
14.235 Vistas

Wow!

 

Muchas gracias por tu ayuda David! Lo probaré y te digo que tal! =D

 

De nuevo, gracias por todo!

0 kudos
Mensaje 3 de 7
14.224 Vistas

Hola gente, ya vuelvo a estar por aquí! Jejeje

 

Gracias a la ayuda de david he podido avanzar un poquito, pero aún no llego donde quería llegar! 😛 Ahora el string que recibo soy capaz de convertirlo en un valor numérico y representarlo en binario y decimal pero aun no se como acabar de mostrar el valor de 32 bits que quiero.

 

Me voy a explicar un poco mejor... (o como mínimo lo intentaré xD)

 

Estoy usando un PIC32 para mi proyecto y necesito enviarle a mi PC desde el chip diferentes valores de 32 bits. Para hacer el envio utilizo el puerto serie (RS232) y por lo tanto tengo que partir esos 32 bits en 4 partes de 8 bits enviarlos 1 por 1.

 

En el Labview recibo correctamente esos 8 bits y me muestra su valor ASCII (ya que recibo un string) pero que no me interasa para nada. Yo lo que estoy intentando es que reciba 4 "paquetes" de 8 bits, concatenarlos en binario (para hacer el número de 32 bits) y pasarlo a decimal.

 

Como no soy muy bueno explicando mejor pongo un ejemplo:

 

En el PIC obtengo el número: 1162892099 que en binario es ->  01000101 01010000 01010011 01000011

 

Envio al Labview: 1o 01000101, 2o 01010000, 3o 01010011, 4o 01000011

 

Recibo en el Labview: 1o  E(01000101), 2o P(01010000), 3o S(01010011), 4o C(01000011). En definitiva recibo EPSC.

 

Ahora lo que quisiera hacer es: a partir de lo que recibo, E P S C, juntar de nuevo esos "paquetes" en un valor de 32 bits, pasarlo a decimal y operar con el número 1162892099 dentro del Labview.

 

Espero haberme explicado mejor 😛

 

Adjunto la Imagen de lo que tengo hecho para ver si me podéis indicar si voy por el buen camino o no. 😛 Y si alguien me ayuda a llegar a la solución pos mucho mejor! He probado de usar el "concatenate string" para volver a juntar los 4 "paquetes" de 8 bits para hacer el de 32 pero como solo tengo cable, no me apaño... :'(

 

Como podréis apreciar soy un graaaaaaaaan novatillo (es la primera vez que uso Labview), pero este es un programa divertido y potente. Espero poder aprender! =D

 

Gracias a todos!

 

 

 

0 kudos
Mensaje 4 de 7
14.200 Vistas

Hola de nuevo XaNtY,

 

     Te adjunto un pantallazo que puede servirte de orientación. Se trata de un esquema muy simple que, de hecho, podría no funcionar. en él se realizan 4 lecturas del buffer del puerto serie, de tal forma que se realizarían 4 lecturas de elementos de 8 bits (32 bits) que van concatenándose hasta formar un string queposteriormente se convierte a U32. Sin embargo, si el micro no envía datos con suficiente rapidez puede que el nodo "Bytes at Port" detecte que hay 0 bytes en lugar de 1 y alguna de las 4 lecturas introduzca un string vacío en la operación de concatenación. Has de tener en cuenta todos estos factores. Además, supongo que la lectura de 32 bits fragmentada en 4 lecturas de 1 byte ha de repetirse continuamente, por lo que sospecho deberás añadir un bucle while adicional.

 

     Una vez más, te adjunto el pantallazo para que pueda servirte de ayuda, sin embargo, has de adaptarlo a tu arquitectura.

 

     Un saludo,

David Oña
0 kudos
Mensaje 5 de 7
14.194 Vistas

Hola,

 

Te adjunto una imagen de como convertir 4 bytes en formato ascii a un número decimal de 32 bits.

 

Saludos.

 

 

string2decimal.JPG

 

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 6 de 7
14.057 Vistas

Hola a todos,

 

Me gustaria saber si lograron solucionar el problema en el armado del dato de 32 bits a partir de 4 bytes. Yo tengo un problema similar pero en este caso se trata de 16 bits a partir de 2 bytes... 

 

Gracias.... 

0 kudos
Mensaje 7 de 7
13.306 Vistas