Visual BasicでIBRDがデータを返しません。IBICではできます。
使用ソフトウェア: Driver Software>>NI-488.2
使用ソフトウェア・バージョン: 1.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A
問題: ibicでは、ibrd関数は正しくデータバッファーを返しますが、Visual Basicを使用すると空のデータバッファーを返します。例えば次のコードを実行すると、ibrdが実行されて終了しても、bufは空です。
Dim buf As String
Dim deviceID As Integer
deviceID = ildev(0, 2, 0, 10, 1, 0)
Call ibclr(deviceID)
Call ibwrt(deviceID, "*idn?")
Call ibrd(deviceID, buf)
Text1.Text = buf
Call ibonl(deviceID, 0)
解決策: これはibrd関数に対し、読込みバイト数を指定した引数を与えていないのが原因です。これは、多数のバイト数のデータを、文字列変数(サンプルコードでは「buf」)が保持し、読込めるかを決定します。前サンプルでは、文字列長を指定し宣言されていないため読込みバイト数は0です。このままでは、ibrdはGPIBハードウェアに0バイト読込みなさいと命令していることになり、文字列変数 「buf 」が空になります。具体的な解決策として次の二つがあります。
- Dim buf As String * 100 (100バイトの文字列変数を宣言します。)
- xバイトを持つ文字列を生成するには、Space$(x)関数をibrdの前に実行します:
buf = Space$(100) ( 100個のスペースの入った変数 「buf」を作ります。
関連リンク: Developer Zone Tutorial: GPIB Language InterfacesGPIB Support: Introduction to the Interactive Control (IBIC)
添付:
報告日時: 07/25/1997
最終更新日: 12/21/2007
ドキュメントID: 0ZOBH3QR
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.