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 」が空になります。具体的な解決策として次の二つがあります。
  1. Dim buf As String  * 100   (100バイトの文字列変数を宣言します。)

  2. xバイトを持つ文字列を生成するには、Space$(x)関数をibrdの前に実行します:
      buf = Space$(100)   ( 100個のスペースの入った変数 「buf」を作ります。


関連リンク:
Developer Zone Tutorial: GPIB Language Interfaces
GPIB Support: Introduction to the Interactive Control (IBIC)

添付:





報告日時: 07/25/1997
最終更新日: 12/21/2007
ドキュメントID: 0ZOBH3QR