いつもお世話になっております。
ご連絡遅くなりまして申し訳ございません。
ご回答がまとまりましたのでご確認いただければ幸いです。
1. FBUS-HSE/H1では、最大のVCR数を超える場合のエラーに関して
最大のVCR数を超える場合のエラーなどに関しては、“nifbus.h”で以下のように定義されております。
#define E_VCR_FULL (-15)
弊社NI-FBUSアプリケーションにおいては、このエラーの定義により同様のエラーが返されます。
そのため、NI-FBUS 関数をコールし、-15が返された場合は、最大のVCR数を超えたエラーになります。
2. VCR領域をクリアする方法は?
こちらに関しては、一点、説明不足だった点があり、誤解されたようですので説明させていただきます。
前回の私のスレッドの中で、“ご提示いただいた回避策以外” と説明させていただきました点ですが、
こちらのご提示いただいた回避策というのは、お客様から提案いただきましたNI-FBUSダイアログを使用して、VCRの領域をクリアすることです。
前回の段階では、弊社NI-Configuratorを使用する方法か、NI-FBUSダイアログを使用してVCRの領域をクリアすること、
の2つの方法を提案させていただきましたが、
他に方法がありましたのでこちらを紹介させていただきます。
- NI-FBUS 関数のnifWriteObjectを使用し、MIBパラメータのVCR_STATIC_ENTRYを0を書き込む
- \National Instruments\NI-FBUS\Data\NvmにVCRをクリアしたファイルを再度読み込む
2番目のほうに関しては詳細を添付の資料(大変申し訳ないのですが、英文での資料、本社からの回答をそのまま添付させていただきます。)に記載してありますので、
ご確認いただければ幸いです。
3. Communications Managerを再起動する方法
こちらに関しては弊社では手動において行っていただくか、
もしくは、通常のWindowsOS上でプロセスを起動させたり、終了させる関数(CreateProcessなど、WindowsOS上からプロセスを制御する関数)をご使用し、
nifb.exeを制御することをおすすめいたします。
なお、これらWindowsOSからプロセスを制御するための関数に関しては弊社サポート外になりますのでご了承ください。
以上、ご回答になりますでしょうか?
今後ともよろしくお願い致します。
日本ナショナルインスツルメンツ株式会社
技術部 南 茂