Discusiones sobre Productos NI

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

cuantos son los maximos bytes que puede estar en espera en el buffer de entrada del visa?

Hola a todos, tengo el siguiente problema:

 

Tengo guardados mas 400 datos en una tarjeta sd en un microcontrolador remoto, estoy utilizando xbee para la transmision serial al puerto usb de la computadora.

Realice una interfaz donde al presionar un boton hace la solicitud de los datos al microcontrolador, cuando el microcontrolador recibe la peticion comienza a mandar los datos remotamente, dentro de un bucle situe un "property node" para ver los bytes que estan por leerse y solamente llega a cierto numero de bytes 4189 aproximadamete aunque el microcontrolador siga mandando mas datos ya no lee mas, este numero de datos es aproximadamente 186 datos de los 400 guardados. no se si tenga un maximo de bytes en espera de ser leidos y si lega a ese limite ya no lee mas o es un detalle de la configuracion.

 

La verdad ya he buscado en algunos textos y no he encontrado nada al respecto de esto. La intencion es que cuando hago la solicitud de transmision debe de esperar a que el micro controlador termine de mandar todos los paquetes de datos para poder trabajar con las muestras tomadas, es deicr, no es una lectura instantanea, en esa espera (dentro del bucle) es cuando ya llega a un punto donde no aepta mas. no se si me explique.

 

De cualquier forma les adjunto parte del codigo con el que estoy trabajando, espero que me puedan ayudar, se los agradeceria mucho.

 

saludos

 

 

0 kudos
Mensaje 1 de 4
4.538 Vistas

hola tavomhe,

 

Antes que nada quiero decirte que tu aplicacion esta muy interesante. Con respecto a tu programa de Labview veo varios detalles que pueden estar ocasionando el problema que describes. Principalmente veo que tienes un problema al plantear la comunicacion serial. Para ayudarte mejor por favor compartenos la informacion de cómo se debe de comunicar la computadora con el microcontrolador.¿Se debe de escribir el comando solo una vez o recurrentemente? Si el comando para pedirle al microcontrolador que envie los datos de la SD es solo un "gatillo" para que el se lean todos los datos y solo ocurre una vez... Creo que no necesitas un ciclo while pare escribir serialmente al microcontrolador y los tiempos de espera asi como la cantidad de bytes a leer no estan bien implementados (¿Por qué 5000 bytes en la lectura?).

Si necesitas enviar el comando al microcontrolador para que periodicamente actualice los datos... tu programa esta mal implementado porque solo mandas el comando una sola vez.

 

En fin, el resumen es que se necesita mas informacion para poderte ayudar.

 

saludos

0 kudos
Mensaje 2 de 4
4.387 Vistas

 

Hola Erwin, muchas gracias, la manera en como se comunica con el microcotrolador es con ese comando en hexadecimal, es como una especie de gatillo, solamente con una vez que se mande el microcontrolador lo recibe y a partir de ahi el microcontrolador comienza a mandar los datos, por eso esta dentro de ese "case" que solo lo manda cuando se apachurra el boton.

 

Originalmene tenia un while solamente para la peticion de datos, y una vez que se mandaba la peticion tenia un boton para salir del while y pasar a la otra parte del codigo.

 

Tenia 5000 bytes por que en un principio puse un "property node" para saber cuantos bytes en el puerto estaban esperando ser leidos, pero no pasaba de cierto numero, si mandaba 200 datos solo recibia 186 aproximadamente, claramente vi que no llegaban a los 5000, asi que mejor le puse ese numero pensando que alomejor se saturaba y por esa razon no seguia recibiendo pero paso lo mismo, aunque el numero de bytes sean menos que 5000, digamos que es un numero sobrado para recibir la informacion.

 

No se si con esa informacion se entienda un poco mejor.

 

saludos

0 kudos
Mensaje 3 de 4
4.366 Vistas

Hola  tavomhe

 

Lo que te recomiendo es que leas las cantidad de bytes almacenados en el buffer ya que pueden existir muchas razones por las que estás perdiendo datos, puedes utilizar VISA test panel o la propiedad VISA Bytes at Serial Port para verificar que la comunicación se esté dando de forma correcta. En esta herramienta de MAX podrás comprobar si hay algo en tu VI que está mal configurado.

 

Espero esto te pueda ayudar y avísame si necesitas alguna otra cosa, o si no se soluciona tu problema.

 

Saludos

Brenda Vargas

 

0 kudos
Mensaje 4 de 4
4.188 Vistas