el 11-12-2013 07:57 AM
Estoy adquieriendo dos señales analógicas mediente un módulo "Daq Assistant". Necesito registrar esas señales y al accionar un pulsador virtual realizar un informe XY de esas señales mediante un módulo "Diadem Report". Necesito almacenar las señales de entrada hasta el momento en que le doy al botón de generar informe. Por esto almaceno las señales temporalmente en un fichero en disco y luego lo recupero para realizar el informe. He adjuntado un esquema simplificado del programa. Hasta aquí todo funciona.
El problema es que el tiempo de acceso al disco me ralentiza mucho la ejecución de programa. Necesitaría una solución que sustituyese la escritura y lectura a disco por un buffer de memoria. ¿Alguien sabe como hacer este buffer y como conectarlo a la entrada del "Diadem Report"?
Saludos y muchas gracias,
Javier.
el
11-12-2013
12:52 PM
- fecha de última edición
11-15-2024
10:35 AM
por
Content Cleaner
Javi
Definitivamente lo que tu tienes que usar es una estructura de Productor/consumidor la cual utiliza los Queue. Que son buffer de memoria RAM que tu los creas y utilizas en tus programas, cuan grande es el buffer depende de la RAM de tu pc.
Aquí encontraras un ejemplo de esto y precisamente con Adquisicion de datos con Daqmx: https://forums.ni.com/t5/Archive-TKB/Using-Producer-Consumer-Architecture-for-DAQmx-Read-and-Write-t...
Saludos
el 11-20-2013 08:23 AM
La verdad es que al final opté por otra solución, ya que no conseguí hacerlo funcionar con lo que me sugeriste.
De todas formas me fue muy bien el video y me hizo replantearme la estructura de mi programa, que ahora es más eficiente.
El buffer al final lo realicé con arrays que se iban completando dentro de un shift register (while loop). No puedo poner el código ya que lo separé en varios vi.