まず事前準備として、
Getting Started with C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition を参考に、EclipseをPCにインストールします。インストール完了後、上記資料の
Running a C/C++ Executable on Your NI Linux Real-Time Target までを手順に従って行います。ここまでの作業で、"Hello World!" が表示されるプログラムを開発、Linux RT上で実行できていることを確認します。
次からの手順で、プログラムにNI-DAQmx APIを組込み、DAQデバイスの制御コードを実装していきます。
-
ヘッダファイルを含むフォルダを、Eclipseのプロジェクトが配置されたディレクトリへコピーします。フォルダは
C:\Program Files (x86)\National Instruments\Shared\ExternalCompilerSupport\C
にあります。パスにスペースが含まれると、Eclipseプロジェクトが正常にパスを認識できない場合があるので、注意してください。
- 添付のsoファイルを、Eclipseのプロジェクトが配置されたディレクトリへコピーします。
- プロジェクトプロパティを開きます。
-
プロパティウィンドウ左側のメニューから、C/C++ Build 》Settingsを開きます。Cross G++ Compiler 》Includesを選択し、手順1でコピーしたヘッダファイルを含む4種類のフォルダのパスを指定します。
-
同じSettingsページから、Cross G++ Linker 》Librariesを選択し、下図のようにLibrariesとSearch Pathを記述します。
-
Cross G++ Linker 》Miscellaneousを選択し、Linker Flagsを以下のように記述します。
--sysroot=C:\build\17.0\x64\sysroots\core2-64-nilrt-linux -Wl,-allow-shlib-undefined
-
設定は以上です。コードを記述しコンパイル後に実行すると、DAQデバイスから電圧を取得できている様子が確認できます。
この資料では、以下のようなサンプルコードを記述し実行しています。
#include <stdio.h>
#include <stdlib.h>
#include <NIDAQmx.h>
int main (void) {
TaskHandle taskHandle = 0;
int32 read;
float64 data[1];
// Create DAQmx Task
DAQmxCreateTask("", &taskHandle);
// Create DAQmx Voltage Channel, use NI 9215/ai0
DAQmxCreateAIVoltageChan(taskHandle, "Mod3/ai0", "", DAQmx_Val_Cfg_Default, -5, 5, DAQmx_Val_Volts, NULL);
// Start DAQmx Task
DAQmxStartTask(taskHandle);
// Read Voltage. This example is running at SW timing acquisition
DAQmxReadAnalogF64(taskHandle, 1, 10.0, DAQmx_Val_GroupByChannel, data, 1000, &read, NULL);
// Close DAQmx Task
DAQmxClearTask(taskHandle);
printf("%8.4f\n", data[0]);
return 0;
}