Visual BasicでGPIB制御を行う場合にバイナリデータを送受信する方法

更新しました Jan 8, 2019

使用製品

Driver

  • NI-488.2

問題

Visual Basicにおいて、NI-488.2のコマンドを用いてGPIB制御を行っていますが、ibwrtibrdコマンドは、送受信するデータとして文字列型の引数しか取ることができず、バイナリ型のデータを送受信することができません。バイナリデータを送受信する方法はあるのですか?

解決策

Visual Basic のライブラリであるVbib-32.basの中に、ibwrtiおよびibrdiというコマンドが用意されており、バイナリデータを送受信することができます。引数は以下の通りです。

 

ibwrti(ByVal ud As Integer, ByRef ibuf() As Integer, ByVal cnt As Long) 

 

ibrdi(ByVal ud As Integer, ibuf() As Integer, ByVal cnt As Long)

 

実際には下記のようなコードを組みます。まず、整数型の配列変数を宣言します。Integer型は2バイトデータですので、送りたいデータの総バイト数を2で割った数を配列のサイズとして確保します。

 

Dim binaryWrite(3) As Integer

ここで、確保した配列(のポインタ)を引数として、ibwrtiもしくはibrdi関数に渡します。下記に、"*IDN?"というデータをバイナリとして 書き込む例を示します。ここで、文字"*"のアスキーコードが 16進数で2A、"I"のアスキーコードが49であることに注意してください。 つまり変数のLow Byte(下2桁)が先に送信されます。
 

 binaryWrite(0) = &H492A ' I *
 binaryWrite(1) = &H4E44 ' N D 
 binaryWrite(2) = &H3F ' ?


Call ibwrti(Dev%, binaryWrite, 5)  ・・・ 5 はバイト数 
 

ibrdi関数も同様に配列(のポインタ)を引数としてデータを受け取り、同様にLow Byteが先に受信されたデータを表します。

この記事はお役に立ちましたか?

いいえ