GPIBでのマスターモードでの送受信では最初にどの相手機器と通信するかアドレス設定を行ってからデータの送受信を行います。
API-GPIB(LNX)では送受信関数でイクウィップメントIDを使用した場合はID自体が相手機器のアドレス情報をもっているためアドレス設定を行わずにデータの送受信が行えます。
デバイスIDを使用した場合はIDがアドレス情報を持っていないためGpibSetAddrInfo関数でアドレス情報を設定する必要があります。
使用例:
○イクウィップメントIDを使用時 |
・送信(指定したEqpIDの相手機器にデータ(IDN*)を送信し、正常終了の場合に送信数を出力します。) |
long SendLen; char SendBuf[256];
strcpy ( SendBuf, "*IDN?" ); // 送信データ「*IDN?」を設定 SendLen = strlen ( SendBuf ); // 送信データから送信文字数を取得 Ret = GpibSendData ( EqpId, &SendLen, SendBuf ); // 指定したイクウィップメントIDの機器にデータを送信 if ( Ret == 0 ) Printf ( "%ld\n", SendLen ); // 正常終了した場合は送信文字数を出力 |
・受信(指定したEqpIDの相手機器からデータを受信し、正常終了の場合に受信数と受信データを出力します。) |
long RecLen; char RecBuf[256];
RecLen = 256; // 最大受信文字数を256に設定 Ret = GpibRecData ( EqpId, &RecLen, RecBuf ); // 指定したイクウィップメントIDの機器からデータを取得 if ( Ret == 0 ) { // 正常終了か確認 Printf ( "%ld\n", RecLen ); // 受信文字数を出力 Printf ( "%s\n", RecBuf ); // 受信データを出力 } |
○デバイスIDを使用時 |
・送信(アドレス1のスレーブ機器にデータ(*IDN?)を送信し、正常終了の場合に送信数を出力します。) |
short Talker, ListenerArray[15]; long SendLen; char SendBuf[256]; Talker = 0; // マイアドレス(GPIBボード側)を指定 ListenerArray[0] = 1; // データを受信する相手機器アドレスを指定 ListenerArray[1] = -1; // 終端「-1」を指定(リスナ配列の最後には必ず入力してください) Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); // アドレスを設定 strcpy ( SendBuf, "*IDN?" ); // 送信データ「*IDN?」を設定 SendLen = strlen ( SendBuf ); // 送信データから送信文字数を取得 Ret = GpibSendData ( DevId, &SendLen, SendBuf ); // GpibSetAddrInfo関数で指定した機器にデータを送信 if ( Ret == 0 ) Printf ( "%ld\n", SendLen ); // 正常終了した場合は送信文字数を出力
|
・受信(アドレス1のスレーブ機器からデータを受信し、正常終了の場合に受信数と受信データを出力します。) |
short Talker, ListenerArray[15]; long RecLen; char RecBuf[256]; Talker = 1; // データを送信する相手機器アドレスを指定 ListenerArray[0] = 0; // マイアドレス(GPIBボード側)を指定 ListenerArray[1] = -1; // 終端「-1」を指定(リスナ配列の最後には必ず入力してください) Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); // アドレスを設定 RecLen = 256; // 最大受信文字数を256に設定 Ret = GpibRecData ( DevId, &RecLen, RecBuf ); // GpibSetAddrInfo関数で指定した機器からデータを取得 if ( Ret == 0 ) { // 正常終了か確認 Printf ( "%ld\n", RecLen ); // 受信文字数を出力 Printf ( "%s\n", RecBuf ); // 受信データを出力 } |