Discusiones sobre Productos NI

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

Labview+Arduino+Memoria RAM

Saludos

Estoy obteniendo datos de un arduino  uno por medio de comunicación serial en Labview, lo que me sucede es que despues de unos segundos de estar funcionando correctamente y leyendo las variables que envio desde el arduino, se apaga el computador  y me muestra una pantalla azul de error.

He estado leyendo y parece que se satura la memoria RAM, pero desde el programa de Labview no he podido lograr como hacer para que se libere esta memoria y por ende no apague el computador ni  consuma tantos recursos.

Adjunto mi archivo y agradecería mucho si pudieran ayudarme con sugerencias y/o que debo cambiar para que esto no suceda (ya que tengo temor de que se dañe mi computador).

 

Hasta pronto

Descargar todos
0 kudos
Mensaje 1 de 6
3.657 Vistas

Hola Vivianam,

 

Para optimizar la memoria de su apliación hay varios procesos, por favor revisa los enlaces que adjunto para obtener mayor información:

 

https://forums.ni.com/t5/Discusiones-sobre-Productos-NI/Problema-memoria-labview/td-p/2298692

http://digital.ni.com/public.nsf/allkb/CF330F03FDBD939B8625743400680183

 

Espero te sirva.

 

Saludos.

Lis Villanueva

0 kudos
Mensaje 2 de 6
3.624 Vistas

Echando un vistazo rápido a Adquisición.vi, en el segundo bucle tienes un while(1) en el que en cada iteración se añade un elemento a una lista con Build Array. Esta adición de elementos se hace sin ningún límite y además a la máxima tasa que permite la CPU, por lo tanto es normal que acabes consumiendo toda la RAM en poco rato. De hecho, si tuvieras un ordenador antiguo con un sólo núcleo es posible que ni siquiera pudieras detener el programa una vez entrara en funcionamiento.

 

Puedes comprobar el uso de la memoria mirando el tamaño del indicador llamado "array", con el administrador de tareas o con el profile.

 

La solución es simplemente programarlo de otro modo, por ejemplo con un tamaño límite del array. Tampoco creo que quieras guardar el valor de los datos cada pocos microsegundos, por lo que alguna temporización mediante delays o eventos en ese bucle no estaría de sobra.

0 kudos
Mensaje 3 de 6
3.610 Vistas

Muchas Gracias lo tendré en cuenta para optimizarlo.

0 kudos
Mensaje 4 de 6
3.607 Vistas

Muchas gracias!!

0 kudos
Mensaje 5 de 6
3.606 Vistas

Saludos a todos, teniendo en cuenta sus recomendaciones optimice algunas cosas del código, pero creo que el problema estaba en la velocidad de transmisión del serial programado en arduino y en Labview ya que mi computador tenia una velocidad distinta del puerto y una vez la cambié no se ha vuelto a apagar mi cumputador.

 

Agradezco los comentarios y sus respuestas a este error.

0 kudos
Mensaje 6 de 6
3.567 Vistas