NI製品ディスカッション

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

NI-FBUS 4.0.1でNI-FBUS APIのnifDownloadDomain()が必ずE_RESOURCESを返す

解決済み
解決策を見る

NI-FBUS APIを使用してFOUNDATION fieldbus機器のファームウェアを書き込むツールを作成しています。NI-FBUS Communications Manager(以下、NI-FBUSと略します)の特定のバージョンでAPIが必ずエラーを返す現象に遭遇しました。現象に遭遇した環境は次の通りです。

 

  • Windows7 Professional 32ビット 日本語 SP1
  • NI PCMCIA-FBUS Series 2
  • NI-FBUS 4.0.1

ファームウェアの書き込みにはNI-FBUS APIのnifDownloadDomain()を使用しています。この環境でこのAPIを呼び出すと必ずエラーE_RESOURCESが返されます。このツールはNI-FBUSのバージョン3.2.1のときにVisual C++で開発しており、これまでこのエラーが返されたことはありませんでした。

 

NI-FBUSのバージョンとOSの組み合わせを変えて現象を調べた結果、次のことがわかりました。

 

  • NI-FBUSのバージョンが4.0以下ではnifDownloadDomain()からE_OKが返されAPIの実行は成功する。
  • NI-FBUSのバージョンが4.0.1ではnifDownloadDomain()からE_RESOURCESが返されAPIの実行は失敗する。
  • この結果はOSの種類や言語にはよらない。
  • nifDownloadDomain()の実行時間は成功する場合でも失敗する場合でも同じで、機器へのダウンロードは中断せず最後まで行われていると考えられる。

調べたNI-FBUSのバージョンは3.2.1, 3.2.3, 4.0, 4.0.1。
OSはWindows XP, Windows Vista 32ビット, Windows7 32ビット, Windows7 64ビットのそれぞれ日本語版と英語版。ただしWindows7ではNI-FBUSの対応バージョンの関係から4.0.1のみ。

 

英語のディスカッションフォーラムではバージョン3.2.3で同様の現象が報告されていますが、こちらではバージョン4.0.1でのみ起きています。

An applicatio​n that ran correctly on 3.1.1 gives runtime errors on 3.2.3.

 

nifDownloadDomain()を使用したアプリケーションを開発している方で、この現象が起きる方はいらっしゃいますか?

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

kuromelody 様

 

平素より弊社製品をご使用いただき誠に有難うございます。

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

 

こちらで過去の事例をお調べしたのですが特に有用な情報が確認できませんでした。

nifDownloadDomain()関数を呼び出す際にE_RESOURCESエラーが発生する原因はいくつか考えられます。

 

- ダウンロードされるファイルを作成・読み取る際に発生するエラー。その場合GetLastError()関数でファイル操作のエラーの詳細を確認できます。GetLastError()関数については下記のMSDNページをご参照ください。

 

GetLastError function

http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx

 

- ODの内容が正しくない。ダウンロードにおいてOD内容が破損した可能性がありますので、再度ダウンロードをお試しください。

 

- PCMCIA-FBUS Series 2インターフェースカードがデバイス側で正常にリソース(メモリ、タイムスライス等)の割り当て・アクセスができなかった。こちらの問題の原因は複雑でして、機器とインターフェース間のデータ量が多い場合、機器ファームウェアで問題が発生した場合などが考えられます。

 

上記も踏まえた上で、ダウンロードしているファイルサイズを教えていただけますでしょうか。

 

宜しくお願いします。

 

日本ナショナルインスツルメンツ株式会社

星 大輝

0 件の賞賛
メッセージ2/10
4,086件の閲覧回数
星様、返信ありがとうございます。

 

すでに調査で数十回ダウンロードしていますが、NI-FBUS 4.0.1では100%の頻度でE_RESOURCESが返されます。NI-FBUS 4.0以下ではE_RESOURCESが返されることはありません。例えば次のようなことをやってもこれは変わりません。

 

  1. NI-FBUSをアンインストールしてWindowsを再起動する。
  2. NI-FBUS 4.0.1をインストールしてWindowsを再起動する。
  3. ファームウェアのダウンロードを行う。
      → nifDownloadDomain()がE_RESOURCESを返して失敗する。
  4. もう一度ファームウェアのダウンロードを行う。
      → nifDownloadDomain()がE_RESOURCESを返して失敗する。
  5. NI-FBUSをアンインストールしてWindowsを再起動する。
  6. NI-FBUS 4.0をインストールしてWindowsを再起動する。
  7. ファームウェアのダウンロードを行う。
      → nifDownloadDomain()がE_OKを返して成功する。
  8. NI-FBUSをアンインストールしてWindowsを再起動する。
  9. NI-FBUS 4.0.1をインストールしてWindowsを再起動する。

  10. ファームウェアのダウンロードを行う。
      → nifDownloadDomain()がE_RESOURCESを返して失敗する。

 

ダウンロードしているファイルのサイズは347,511バイトです。ちなみにnifDownloadDomain()の実行時間はE_RESOURCESが返される場合でもE_OKが返される場合でも8分50秒ほどで変わりません。

 

nifDownloadDomain()がE_RESOURCESを返したときにGetLastError()が何を返すかは調べてみます。

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

kuromelody 様

 

平素より弊社製品をご使用いただき誠に有難うございます。

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

 

詳細なご説明有難うございます。
ドライバの問題の可能性があるのですが、
添付のNI-Communications Manager Patch (4.0.1)をダウンロードしまして、
解凍したnifbcm.exeをC:\Program Files\National Instruments\NI-FBUS\Binaries\nifb.exeと置き換えて試していただけますでしょうか。

こちらのパッチは32ビットOS用にですので予めご了承ください。

 

宜しくお願いします。

 

日本ナショナルインスツルメンツ株式会社

星 大輝

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

添付のパッチを試そうとしたのですが、パスワードがかかったZIPファイルとなっていて解凍できません。

公開前のものをここに貼るためにパスワードをかけたのだと思います。フォーラムの機能のプライベートメッセージを使って私にパスワードを送っていただけますか? すぐに試してみます。

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

nifDownloadDomain()の実行直後にGetLastError()を呼んでどんな値が返ってくるか調べてみました。

 

今回問題になっているNI-FBUS 4.0.1で調べたところ、nifDownloadDomain()がE_RESOURCESを返してきた直後にGetLastError()を呼ぶと0、すなわちERROR_SUCCESSが返ってきました。

 

比較のために、nifDownloadDomain()に存在しないファイルのパスを与えてみたところ、

nifDownloadDomain()の戻り値: E_RESOURCES

GetLastError()の戻り値: ERROR_SUCCESS

となりました。

残念ながらnifDownloadDomain()の処理が終わるまでに、Win32のエラー情報は失われてしまうようです。OSはWindows XPとWindows 7、NI-FBUSのバージョンは3.2.3, 4.0, 4.0.1でこれらすべての組み合わせで調べてみましたが、どの組み合わせでも同じ結果でした。

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

kuromelody 様

 

平素より弊社製品をご使用いただき誠に有難うございます。

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

 

エラーの確認有難うございます。
また、パスワードがないファイルを添付致しますのでご確認ください。
大変失礼致しました。
 

宜しくお願いします。

 

日本ナショナルインスツルメンツ株式会社

星 大輝

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

頂いたNI-Communications Manager Patch (4.0.1)を既存のnifb.exeと置き換えて試してみたところ、nifDownloadDomain()がE_RESOURCESを返すことがなくなりました。機器へのファームウェアの書き込みも正常に完了します。

 

念のため次のOSで試してみたところすべてのOSで正常に動作することが確認できました。

  • Windows XP SP3 日本語/英語
  • Windows Vista 32ビット SP2 日本語/英語
  • Windows 7 32ビット SP1 日本語/英語
  • Windows 7 64ビット SP1 英語

パッチは32ビット版とのことでしたが、64ビットOSでもnifb.exeは32ビット版がインストールされているので試してみました。

 

今回の件を整理すると、

  • NI-FBUS 4.0.1のnifb.exe (version 4.0.1.49154)には、異常がないにもかかわらずnifDownloadDomain()がE_RESOURCESを返すバグがある。
  • 御社では原因箇所を把握しており、バグを修正したパッチ版を提供する準備がある。

ということでよろしいでしょうか。

このパッチが正式に公開されたときにはこのトピックに連絡をいただければ幸いです。そのときをもってこのトピックは解決とさせていただきたいと思います。

0 件の賞賛
メッセージ8/10
3,981件の閲覧回数
解決策
トピック作成者kuromelodyが受理

kuromelody 様

 

平素より弊社製品をご使用いただき誠に有難うございます。

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

お忙しい中、解決のご連絡を頂きまして誠にありがとうございます。

 

エラーが解消されまして大変嬉しく思っております。

こちらの都合で大変恐縮なのですがFBUSのパッチに関しては情報公開をしておらず、
最新のドライバにて対応させていただいております。
本不具合についてはパッチで修正できたとのことですので、
つい最近公開されましたNI-FBUS Configurator 4.1でも問題ないはずですので、
下記リンクよりダウンロードしてお試しいただければと思います。

 

NI-FBUS Configurator 4.1 - Windows 7 x86/Vista x86/Server 2008 R2 (64-bit)/XP x86/Vista x64/Server 2003 R2 (32-bit)/7 64 bit

https://www.ni.com/ja/support/downloads/software-products/download.ni-fbus-configurator-software.htm...

 

本件については大変ご迷惑をおかけしました。

 

宜しくお願いします。

 

日本ナショナルインスツルメンツ株式会社

星 大輝

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

NI-FBUS Configurator 4.1をインストールして動作させてみたところ、正常に動作することが確認できました。

丁寧に対応していただきありがとうございました。

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