12-05-2019 11:52 PM
■GPBI-USB-HSを制御するためのAPIやNI488.2プログラムについて、質問があります。
○現在、GPIB-USB-HSを使用した測定器制御のVBAプログラムを社内運用しています。
その中で、現環境[Window7-32bit、Excel32bit]から[Window10-64bit、Excel64bit]環境に動作環境の変更を行う必要があり、その際下記エラーが発生してしまいます。
この場合の対処方法があれば教えて頂けますでしょうか。
○エラーの内容
プログラム変更なしで、環境のみ変更した状態でVBAを実行すると下記①エラーが発生します。
①実行時エラー'53' ファイルが見つかりません:Gpib-32.dll
この①のエラーにおいては、下記URLサイトを参考に、追加しているモジュールVBIB32(ver1.6)内の"GPIB-32.dll"をすべて"ni4882.dll"に変更することで、エラーはなくなりました。
しかし、下記②が発生しました。
②実行時エラー'453': エントリ RegisterGpibGlobalsForTreadがDLLファイル ni4882.dll内に見つかりません。
---エラー箇所のソースコード引用------------------------------------------------
Public Sub RegisterGPIBGlobals()
Dim rc As Long
rc = RegisterGpibGlobalsForThread(Longibsta, Longiberr, Longibcnt, ibcntl)
If (rc = 0) Then
GPIBglobalsRegistered = 1
ElseIf (rc = 1) Then
rc = UnregisterGpibGlobalsForThread
rc = RegisterGpibGlobalsForThread(Longibsta, Longiberr, Longibcnt, ibcntl)
GPIBglobalsRegistered = 1
------------------------------------------------------------------
この②のエラーにおいては、どう対応すべきかわかっていません。
○参考URL
○詳細なVBAプログラムの環境について記載します。
・ni4882.dllのバージョン:ni4882_302.exe
・API:VBIB32(ver1.6)
■また、このエラー対応中においてもでてきた質問が2点あります。
①VBIB32.dllはAPI:gpib-32.dllの関数宣言等を行っている32bit-Excel用のべースファイルですが、
API:ni4882.dllの関数宣言等を行っている64bit-Excel用のサンプルべースファイルは提供されていないのでしょうか。
②VBのibdevにて、初期化する際、RegisterGpibGlobalsForThreadをcallしておりますが、
NationalInstruments.NI4882に移行する場合、ibdevのCallのみで、よろしいでしょうか
GPIB USB_2.0.pdfには、
There no equivalent NI commands、
purpose:Registers local GPIB status variables for a thread
と記載されておりました。
お分かりになる方がいましたら、ご教授のほどよろしくお願いいたします。
12-09-2019 08:07 PM
横から失礼します。サンプルべースファイルについては聞いたことないですね・・・実際に実装されている方がいればサンプル的に頂戴できると嬉しいのですが・・・。
12-11-2019 11:50 PM
おじゃまします。(私絡んでるみたいですね)
自分は実際にやってないはず(記憶の範囲で)では、なんともお答えできません。(ぺこり)
vba ni4882.dll検索2場目候補
https://documentation.help/NI-488.2-jp/DifferencesBetweentheGPIB32APIandNI4882API.html
ぽよよん様は、VISAを使われたようですし、うーん・・・
09-26-2021 07:34 AM
もう既に解決されているか、他の方法で実現されていると思いますが、
同じ問題に直面し、この問題を調べる際に参考にさせていただきました。
NI社資料をいろいろ調べて、何とか動作させることができました。
資料添付します。