Uso de National Instruments NIDAQmx con Nokia Qt


2 de noviembre de 2010


Table of Contents

1. Introducción
2. Instalación de NIDAQmx
3. Uso con Qt LGPL para Windows
4. Uso con Qt en Linux

1. Introducción

National Instruments propone los controladores NI-DAQmx como la base para explotar la mayoría de sus productos de adquisición de datos. Dicha propuesta es muy productiva y eficiente, pues unifica la manera de crear código y la hace compatible con distintos productos sin necesidad de hacer adaptaciones.

La siguiente figura muestra la relación de NI-DAQmx con los distintos componentes de un sistema de adquisición de datos. Esta abstracción uniformiza el acceso a distintos tipos de harware y lo pone a disposición de distintas aproximaciones del desarrollo de software.

Figure 1. Abstracción creada con NiDAQmx

Abstracción creada con NiDAQmx

Esta propuesta no es nueva, ni mucho menos. Hace ya muchos años que existe una propuesta parecida para sistemas abiertos (Linux, ...) que se llama COMEDI con la misma idea.

Por otra parte, en la plataforma Microsoft Windows, el software proporcionado por National Instruments está preparado para que se puedan desarrollar programa en Microsoft Visual Studio, por lo que son necesarios ciertos ajustes si deseamos poder utilizarlo en otras plataformas de desarrollo.

El propósito de esta página es proporcionar información para adaptar NI-DAQmx a Nokia Qt de la manera más sencilla posible.

2. Instalación de NIDAQmx

El primer paso será la instalación del software NIDAQmx.

Para ello hay que registrarse en la página de National Instruments y descargar el software NI-DAQmx para Microsoft Windows. Para localizar el software, ir a la pestaña "soporte" de la página.

Figure 2. Página donde se descargan las bibliotecas NIDAQmx.

Página donde se descargan las bibliotecas NIDAQmx.

El archivo descargado tiene un tamaño cercano a 1 GByte, por lo que se necesitará tiempo para la descarga. Una vez instalado en el ordenador, puede llegar a consumir varios GBytes de espacio en disco.

La instalación de NIDAQmx incluye montones de información, utilidades, ejemplos, etc. que son muy útiles para aprender a usarla.

3. Uso con Qt LGPL para Windows

La versión LGPL de Qt para Windows emplea por debajo el compilador mingw (minimalists GNU for Windows), que es una adaptación de la herramientas libres GNU al entorno Windows.

Para que funcione en esta versión de Qt "basta" con lograr adaptar los elementos de NIDAQmx a este compilador. Para ello se pueden seguir los siguientes pasos.

Primero adaptar el archivo de proyecto Qt (.pro) añadiendo el siguiente código:

# configuracin para National Instruments NIDAQmx

# en Windows con Qt LGPL (compilador mingw)
win32 {
    # aadimos la ruta para localizar la cabecera de la tarjeta
    INCLUDEPATH += "C:/Archivos de programa/National Instruments/NI-DAQ/DAQmx ANSI C Dev/include"

    # aadimos la ruta de busqueda de las bibliotecas (opcin -L)
    LIBS += -L"C:/Archivos de programa/National Instruments/NI-DAQ/DAQmx ANSI C Dev/lib/msvc"
    #LIBS += -L$$PWD # donde esta mi programa
    
    # aadimos la librera "NIDAQmx.lib" quitando partes del nombre del archivo, (opcin -l)
    LIBS += -lNIDAQmx
}

# configuración para Linux, etc. (O PARA ENGAÑARLOS A TODOS)
unix {
    # paquetes falsos para poder compilar y tirar p'alante
    INCLUDEPATH += nidaqmx_dummy
    SOURCES += nidaqmx_dummy/nidaqmx_dummy.cpp
}

Básicamente consiste en añadir las rutas de busqueda de las bibliotecas y de las cabeceras. Estas rutas las deberemos adaptar en función de dónde hayamos instalado las bibliotecas.

A continuación, incluir la cabecera NIDAQmx.h en el módulo C/C++ que haga uso de las funciones de la biblioteca. Además, será necesario añadir código ANTES de dicha inclusión para "engañar" al preprocesador y lograr que la biblioteca sea compatible con mingw.

Este podría ser un típico fragmento de código:

// Líneas a añadir ANTES de incluir la cabecera NIDAQmx.h para NIDAQmx versión 9.1.7
// Actúan manipulando el comportamiento del preprocesador,
// así que dependen mucho del compilador y de la versión de NIDAQmx usada
#include <QtGlobal>
#ifdef Q_OS_WIN32
  typedef unsigned long long uInt64;
  #define __int64 long long int
#endif
#include <NIDAQmx.h>

4. Uso con Qt en Linux

De momento aún no está listo.

¿Lo estará?. Pues no se sabe, es cuestión de invertir tiempo.

Para que se pueda trabajar en Linux, se ha preparado un paquete que permite que, al menos, la aplicación compile. Con ello se puede lograr desarrollar el resto de la aplicación sin depender de esta parte.

Las instruciones para usarlo son: