08-23-2010 08:47 PM
お世話になっております。
現在、電圧値取得のプログラムを作成しています。
NI-DAQmx シミュレーションデバイスを用いてデバッグをしているのですが、DAQmxStartTaskが異常終了します。
戻り値ですが、-50103(DAQmxErrorPALResourceReserved)が返ってきます。
使用しているOSは、Windows XP、アプリケーションは、サンプルであるVC++をベースにしたものと、C++ Builder2010を使用して作成した両方を試しています。
アプリケーション側では、以下の手順でプログラムを組んでいます。
1.DAQmxCreateTask
2.DAQmxCreateAIVoltageChan(taskHandle,"Dev2/ai0","",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL))
DAQmxCreateAIVoltageChan(taskHandle,"Dev2/ai1","",DAQmx_Val_Cfg_Default,-5.0,5.0,DAQmx_Val_Volts,NULL)
3.DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000)
4.DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNCallback,NULL)
5.DAQmxRegisterDoneEvent(taskHandle,0,DoneCallback,NULL)
6.DAQmxStartTask(taskHandle)
また、NI-DAQmx シミュレーションデバイスは、以下のように設定しています。
・NI-DAQmxデバイスで、NI USB-6215を選択し、Dev2を使用。
・シミュレーションタスクを作成。
ここで、Dev2/ai0、Dev2/ai1を使用する。
Dev2/ai0の信号入力範囲は、10~-10、Dev2/ai1の信号入力範囲は5~-5
タイミング設定は、集録モードは「連続サンプル」、読み取るサンプル数は「100」、レート(Hz)は「1k」
上記設定にてアプリケーションを起動すると、DAQmxStartTaskにて、-50103(DAQmxErrorPALResourceReserved)が返ってきます。
しかし、NI-DAQmx シミュレーションデバイスの集録モードを「Nサンプル」にすると、DAQmxStartTaskも正常で返ってきて、データ取得も可能です。
NI-DAQmx シミュレーションデバイスの集録モードを変更することで、なぜDAQmxStartTaskが正常終了するか、異常終了するのか、わかりません。
初歩的な質問で申し訳ありませんが、ご存知の方がいましたら教えていただけませんでしょうか。
よろしくお願いいたします。
08-26-2010 08:43 AM
K.Tani 様
平素より NI 製品をご利用いただきまして誠にありがとうございます。
日本ナショナルインスツルメンツ技術部の巳波と申します。
K.Tani 様が実行されている「シミュレーションタスク」というのは MAX (Measurement & Automation Explorer) 上で「データ設定」を右クリック → 「新規作成」 → 「NI-DAQmx タスク」 から作成されたものでしょうか。
MAX の「NI-DAQmx タスク」が実行中にはそのデバイスの機能が予約されますので、別のアプリケーション (Visual C++ など)から同じデバイスの同じ機能を使用しようとすると「リソースが予約されています」といった エラーが出ます。
プログラムを動作させるためには MAX の「デバイスとインタフェース」 でシミュレーションデバイスが作成されていれば十分ですので、C++ のプログラムと MAX の「NI-DAQmx タスク」は同時に実行しないようにしてください。
宜しくお願い致します。
08-26-2010 07:36 PM
日本ナショナルインスツルメンツ技術部 巳波様
お世話になっております。
回答ありがとうございました。
シミュレーションタスクは、回答していただいた内容にて、使用しています。
使用方法は理解しました。
ありがとうございました。
これからもよろしくお願いいたします。