NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

Windows7(64bit)環境のコールバック関数

解決済み
解決策を見る

WindowsXP(32bit)環境で動作していたサンプルプログラムが、

Windows7(64bit)環境では動作しません。

 

使用ボード:NI-PCI-6534

サンプルプログラム:Cont Acq-Int Clk-Every N Samples Event ※アナログ入力⇒デジタル入力に変更

 

 /*********************************************/
 // DAQmx Configure Code
 /*********************************************/
 DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
 DAQmxErrChk( DAQmxCreateDIChan(taskHandle, "/Dev1/port2_16", "", DAQmx_Val_ChanForAllLines) );
 DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_ContSamps,1000));
 DAQmxErrChk (DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,1000,0,EveryNSamplesCallback,NULL));

 

 DAQmxRegisterEveryNSamplesEvent()関数の呼び出し時にエラーが発生します。

エラーコードを確認すると「-89000」となっていますが、このエラーコードに関する

ドキュメントがないため原因が分かりません。

 

以上、ご教示願います。

 

(補足1)

ヘッダー(NIDAQmx.h)およびライブラリ(NIDAQmx.lib)は、以下のフォルダにある64bit用のものを

使用しています。

 

C:\Program Files (x86)\National Instruments\Shared\ExternalCompilerSupport\C\include\NIDAQmx.h

C:\Program Files (x86)\National Instruments\Shared\ExternalCompilerSupport\C\lib64\msvc\NIDAQmx.lib

 

(補足2)

NI Spyのキャプチャ結果は以下の通りです。

 

1.  DAQmxCreateTask ("", 0x00A2E460)
2.  DAQmxCreateDIChan (0x0000000000A2E460, "/Dev1/port2_16", "", "DAQmx_Val_ChanForAllLines")
3.  DAQmxCfgSampClkTiming (0x0000000000A2E460, "", 10000, DAQmx_Val_Rising, DAQmx_Val_ContSamps, 1000)
4.  DAQmxRegisterEveryNSamplesEvent (0x0000000000A2E460, "DAQmx_Val_Acquired_Into_Buffer", 1000, 0, 0x000000014000100F, NULL)
5.  DAQmxGetExtendedErrorInfo ("", 2048)
6.  DAQmxStopTask (0x0000000000A2E460)
7.  DAQmxClearTask (0x0000000000A2E460)

 

0 件の賞賛
メッセージ1/10
4,759件の閲覧回数

seitaro 様

ご投稿頂きましてありがとうございます。

日本ナショナルインスツルメンツ技術部のワカスと申します。

 

seitaro 様のお使い中のDaqmxドライバはどのようなバージョンでしょうか。

Window7にNI-Daqmx9.0.2以降のバージョンが対応しております。

 

ご確認頂けますでしょうか。

0 件の賞賛
メッセージ2/10
4,745件の閲覧回数

NI-DAQmxのバージョンは 9.3 を使用しています。

開発環境は以下の通りです。

 

OS Windows7 Professional(64bit) SP1

IDE VisualStudio2008(ビルドプラットフォームは x64 を使用)

 

以上、よろしくお願いいたします。

 

 

 

0 件の賞賛
メッセージ3/10
4,737件の閲覧回数

seitaro 様

ご確認頂きましてありがとうございます。

 

弊社のデータベースを調べ致しましたが、エラーコード「-89000」は Windows 7(64bit)にて
Cont Acq-Int Clk-Every N Samples Eventのサンプルプログラムを実行する何人のお客様より報告されています。

 

一人のお客様は、Win7(64bit)にてDAQデバイスNI 6533/34を同じプログラムでご利用頂いたところ、エラー89000が発生されました。

この場合も、32bitシステムにてプログラムが正常に動作するとのことです。

 

こちらの現象は既に本社にCAR(Corrective Action Require)として登録されております。

今のところでは、上記エラーに対処するパッチがリリーズされておりません。

大変お手数をおかけ致しますが、Win7(64bit)にてこちらのサンプルプログラムは実行頂けないと思います。

 

以上、宜しくお願い致します。

0 件の賞賛
メッセージ4/10
4,727件の閲覧回数

サンプルが動作しないとのこと、了解しました。

32ビット版を使用するしかなさそうですね。

 

後学のため、以下の内容も教えていただけますでしょうか?


・NI 6533/34以外のDigitalI/Oボードを使用しても同様のエラーが発生しますか?(このエラーが回避可能なボードの有無)
・それとも現状のWindows 7(64bit)環境では、(DAQmxRegisterEveryNSamplesEvent含め)コールバック関数は使用できないということでしょうか?
・結局エラーコード「-89000」はどういった内容のエラーなのでしょうか?
・CAR(Corrective Action Require)として登録されているということは、いずれパッチがリリースされると考えてよろしいでしょうか?

 

以上、よろしくお願いいたします。

 

0 件の賞賛
メッセージ5/10
4,636件の閲覧回数

seitaro 様

ご連絡頂きましてありがとうございます。

今回のエラーについて可能性のある回避策をご連絡を申し上げます。

 

お手数ですが、64ビット環境にて下記をお試し頂けますでしょうか。


今回のエラーはWindows7 (64ビット)の環境で報告されております。

32ビットに使用されたAttributeのデータタイプ「u32」を(64ビット)にて「tSizeType」に変換するとのことです。

今回のエラーは、「Dynamic cast failed error」となり、Attribute のデータタイプが「tSizeType」にアップグレードされていないことを示していることが考えられます。

 

例えば、イベントにて「Sample Interval」は「uInt32」ですが、64ビット環境では、こちらは「tSizeType」にする必要があります。

 

お手数ですが、お使い中のプログラム中 DAQmxRegisterEveryNSamplesEvent のデータタイプを 「uInt32」 から 「tSizeType」 に変換して頂き、再度プログラムを実行していただければと思います。

 

以上、宜しくお願い致します。

0 件の賞賛
メッセージ6/10
4,612件の閲覧回数

「tSizeType」型はどのファイル(ヘッダー)に定義されていますでしょうか?

uInt32をtSizeTypeに変更しただけでは、コンパイルエラーとなります。

 

以上、よろしくお願いいたします。

 

 

0 件の賞賛
メッセージ7/10
4,600件の閲覧回数
解決策
トピック作成者seitaroが受理

seitaro 様

ご報告頂きましてありがとうございます。

 

弊社のデータベースを調べ致しましたところ、弊社のNI-HSD 64bit Driverにおけるエラー「-89000」に対する回避策として「u32」型を有する全てのAttributeを「tSizeType」型に変換するような報告がありましたので、念のため、seitaro様にも試して頂きました。

 

現在、seitaro様はNI-Daqmx 9.3をご使用中ですが、お手数ですが、下記のリンクよりDaqmxの最新版をインストールして頂いてお試して頂けますでしょうか。

 

NI-Daqmx 9.4:
https://www.ni.com/ja/support/downloads/drivers/download.ni-daq-mx.html#288345


以上、宜しくお願い致します。

0 件の賞賛
メッセージ8/10
4,588件の閲覧回数

NI-Daqmx 9.4に更新したところ、無事サンプルプログラムが動作しました。

(「tSizeType」型への変換はしなくてすみました)

 

ちょうど良いタイミングで修正版が公開されて助かりました。

これまでの御対応、どうもありがとうございました。

0 件の賞賛
メッセージ9/10
4,573件の閲覧回数

seitaro 様

 

ご報告頂きましてありがとうございます。

仰る通り、本件のパッチがDAQmx 9.4 にてリリーズされました。

 

ご所望の動作が実現されましたことは何よりも嬉しいです。

 

今後とも宜しくお願い致します。

 

 

0 件の賞賛
メッセージ10/10
4,571件の閲覧回数