基本的に、API-GPIB(98/PC)と新規関数に互換性はありません。
以下の関数対応表と変換例を参考にプログラムの移行を行う必要があります。
API-GPIB(98/PC) |
新規関数 |
|
●初期化・終了処理関数 |
||
GpIni |
||
GpExit |
||
GpIfc |
||
GpRen GpResetren |
||
●送受信関数 |
||
GpTalk GpTalkEx |
||
GpTalkBinary GpTalkExBinary |
なし |
GpibSendData(代用) |
GpTalkAsync |
なし |
未実装 |
GpTalkAsyncBinary |
なし |
未実装 |
GpListen GpListenEx |
||
GpListenBinary GpListenExBinary |
なし |
GpibRecData(代用) |
GpListenAsync GpListenAsyncVB GpListenAsyncBinary |
なし |
未実装 |
GpCheckAsync |
なし |
未実装 |
GpStopAsync |
なし |
未実装 |
GpDelim |
||
GpTimeout |
||
GpDma |
なし |
未実装 |
GpSlowMode |
||
●シリアルポール関数 |
||
GpPoll GpPollEx |
||
●パラレルポール関数 |
||
GpStppoll |
なし |
未実装 |
GpExppoll |
なし |
未実装 |
GpPpollmode |
なし |
未実装 |
●SRQ送出関数 |
||
GpSrqEx |
||
GpChkstb |
||
●イベント発生関数 |
||
GpSetEvent |
なし |
未実装 |
GpEnableNextEvent |
なし |
未実装 |
GpSetEventSrq GpSetEventDet GpSetEventDec GpSetEventIfc |
なし |
未実装 |
●ステータス関数 |
||
GpDevFind GpDevFindEx |
||
GpBoardsts |
||
GpBoardstsEx |
||
GpReadbus |
||
GpUpperCode |
なし |
未対応 |
GpTaLaBit |
なし |
未対応 |
●制御関数 |
||
GpComand |
||
GpComandAsync |
なし |
未実装 |
GpSdc GpDcl |
||
GpGet |
||
GpGtl |
||
GpLlo |
||
GpTct |
なし |
未実装 |
●ウエイト関数 |
||
GpStwait |
なし |
未実装 |
GpWaittime |
なし |
未実装 |
●文字列操作関数 |
なし |
未実装 |
●IEEE488.2関数 |
なし |
未実装 |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Ret;
Ret =GpIni(); |
戻り値用変数宣言 デバイス名を指定 デバイスID用変数宣言 デバイスを初期化 |
long Ret; char DeviceName[50] = "Gpib000"; short DevId; Ret = GpibInit ( DeviceName, &DevId ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
Ret =GpExit(); |
デバイスを終了 |
Ret = GpibExit ( DevId ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD IfcTime =1; Ret =GpIfc(); |
IFCTimeを設定 IFCラインを変化 |
short IfcTime = 1; Ret = GpibSendIFC ( DevId ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
Ret =GpRen(); |
Enableを有効に設定 RENを有効に設定 |
short Enable = 1; Ret = GpibChangeREN ( DevId, Enable ); |
Ret =GpResetren(); |
Enableを無効に設定 RENを無効に設定 |
short Enable = 0; Ret = GpibChangeREN ( DevId, Enable ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
●マスタモード |
||
DWORD Srlen; DWORD Cmd[31]; BYTE Srbuf[10]; Cmd[0]=2; Cmd[1]=0; Cmd[2]=1;
lstrcpy ( ( char * ) Srbuf, "*IDN?" ); Srlen = lstrlen ( ( char * ) Srbuf ); Ret = GpTalk ( Cmd, Srlen, Srbuf ); |
データ数用変数宣言 アドレス配列用変数宣言 データ用変数宣言
トーカアドレスを指定 リスナアドレスを指定
アドレスをセット
データを設定 データ数を設定 設定したアドレスにデータを送信 |
long SendLen; short Talker, ListenerArray[15]; char SendBuf[256];
Talker = 0; ListenerArray[0] = 1; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); strcpy ( SendBuf, "*IDN?" ); SendLen = strlen ( SendBuf ); Ret = GpibSendData ( DevId, &SendLen, SendBuf ); |
DWORD Srlen; DWORD Cmd[31]; BYTE Srbuf[10]; Cmd[0]=2; Cmd[1]=0; Cmd[2]=1;
lstrcpy ( ( char * ) Srbuf, "*IDN?" ); Srlen = lstrlen ( ( char * ) Srbuf ); Ret = GpTalkEx ( Cmd, &Srlen, Srbuf ); if ( Ret == 0 ) Printf ( "%ld\n", Srlen ); |
データ数用変数宣言 アドレス配列用変数宣言 データ用変数宣言
トーカアドレスを指定 リスナアドレスを指定
アドレスをセット
データを設定 データ数を設定 設定したアドレスにデータを送信
正常終了の場合に送信バイト数表示 |
long SendLen; short Talker, ListenerArray[15]; char SendBuf[256];
Talker = 0; ListenerArray[0] = 1; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); strcpy ( SendBuf, "*IDN?" ); SendLen = strlen ( SendBuf ); Ret = GpibSendData ( DevId, &SendLen, SendBuf ); if ( Ret == 0 ) Printf ( "%ld\n", SendLen ); |
●スレーブモード(GpTalkExのみ) |
||
DWORD Srlen; DWORD Cmd[31]; BYTE Srbuf[10]; Cmd[0]=0; lstrcpy ( ( char * ) Srbuf, "*IDN?" ); Srlen = lstrlen ( ( char * ) Srbuf ); Ret = GpTalkEx ( Cmd, &Srlen, Srbuf ); if ( Ret == 0 ) Printf ( "%ld\n", Srlen ); |
データ数用変数宣言 アドレス配列用変数宣言 データ用変数宣言 スレーブ用のアドレスを設定 データを設定 データ数を設定 データを送信
正常終了の場合に送信バイト数表示 |
long SendLen;
char SendBuf[256];
strcpy ( SendBuf, "*IDN?" ); SendLen = strlen ( SendBuf ); Ret = GpibSendData ( DevId, &SendLen, SendBuf ); if ( Ret == 0 ) Printf ( "%ld\n", SendLen ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
●マスタモード |
||
DWORD Srlen; DWORD Cmd[31]; BYTE Srbuf[256]; Cmd[0]=2; Cmd[1]=1; Cmd[2]=0;
Srlen =256; Ret = GpListen ( Cmd, &Srlen, Srbuf ); if ( Ret < 3 ) { Printf ( "%ld\n", Srlen ); Printf ( "%s\n", Srbuf ); } |
データ数用変数宣言 アドレス配列用変数宣言 データ用変数宣言
トーカアドレスを指定 リスナアドレスを指定
アドレスをセット
最大データ受信数を設定 指定したアドレスからデータを受信
正常終了した場合 受信文字数表示 受信文字表示 ※戻り値が異なっているので注意してください |
long RecLen; short Talker, ListenerArray[15]; char RecBuf[256];
Talker = 1; ListenerArray[0] = 0; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); RecLen = 256; Ret = GpibRecData ( DevId, &RecLen, RecBuf ); if ( Ret == 0 ) { Printf ( "%ld\n", RecLen ); Printf ( "%s\n", RecBuf ); } |
DWORD Srlen; DWORD Cmd[31]; BYTE Srbuf[256]; Cmd[0]=2; Cmd[1]=1; Cmd[2]=0;
Srlen =256; Ret = GpListenEx ( Cmd, &Srlen, Srbuf ); if ( Ret < 3 ) { Printf ( "%ld\n", Srlen ); Printf ( "%s\n", Srbuf ); } |
データ数用変数宣言 アドレス配列用変数宣言 データ用変数宣言
トーカアドレスを指定 リスナアドレスを指定
アドレスをセット
最大データ受信数を設定 指定したアドレスからデータを受信
正常終了した場合 受信文字数表示 受信文字表示 ※戻り値が異なっているので注意してください |
long RecLen; short Talker, ListenerArray[15]; char RecBuf[256];
Talker = 1; ListenerArray[0] = 0; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); RecLen = 256; Ret = GpibRecData ( DevId, &RecLen, RecBuf ); if ( Ret == 0 ) { Printf ( "%ld\n", RecLen ); Printf ( "%s\n", RecBuf ); } |
●スレーブモード(GpListenExのみ) |
||
DWORD Srlen; DWORD Cmd[31]; BYTE Srbuf[256]; Cmd[0]=0; Srlen =256; Ret = GpListenEx ( Cmd, &Srlen, Srbuf ); if ( Ret < 3 ) { Printf ( "%ld\n", Srlen ); Printf ( "%s\n", Srbuf ); } |
データ数用変数宣言 アドレス配列用変数宣言 データ用変数宣言 スレーブ用のアドレスを設定 最大データ受信数を設定 データを受信
正常終了した場合 受信文字数表示 受信文字表示 ※戻り値が異なっているので注意してください |
long RecLen;
char RecBuf[256];
RecLen = 256; Ret = GpibRecData ( DevId, &RecLen, RecBuf ); if ( Ret == 0 ) { Printf ( "%ld\n", RecLen ); Printf ( "%s\n", RecBuf ); } |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Delim, Eoi; Delim = 1; Eoi = 1;
Ret = GpDelim ( Delim, Eoi ); |
変数を宣言 Delimを設定 Eoiを設定 Eosを設定(0固定) デリミタ・EOIを設定 |
short Delim, Eoi, Eos; Delim = 1; Eoi = 1; Eos = 0; Ret = GpibSetDelim ( DevId, Delim, Eoi, Eos ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Timeout; Timeout =1000; Ret = GpTimeout ( Timeout ); |
変数を宣言 TimeOutを設定 タイムアウト値を設定 |
long TimeOut; TimeOut = 1000; Ret = GpibSetTimeOut ( DevId, TimeOut ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD SlowTime; SlowTime =1; Ret = GpSlowMode ( SlowTime ); |
変数を宣言 SlowTimeを設定 スローモードを設定 |
short SlowTime; SlowTime= 1; Ret = GpibSetSlowMode ( DevId, SlowTime ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
●GpPoll |
||
DWORD Cmd[31]; DWORD Pstb[31];
short i; Cmd[0]=2; Cmd[1]=1; Cmd[2]=2;
Ret =GpPoll ( Cmd, Pstb );
if ( Ret < 2 ) { i = Pstb[0];
Printf ( "%ld\n", Cmd[i] ); Printf ( "%ld\n", Pstb[i] ); } else if ( Ret == 128 ) { Printf ( "No SRQ\n" ); } |
アドレス用変数を宣言 ステータスバイト用の変数を宣言 SRQ用の変数を宣言 SRQ送出番号格納用の変数宣言
アドレス1設定 アドレス2設定
シリアルポールを実行
正常終了した場合 SRQ送出機器のアドレスを特定
SRQを送出したアドレスを表示 ステータスバイトを表示
SRQの送出機器がない ※ 出力する戻り値・配列構造が異なりますので、例では同等になるように調節しています |
short AddrArray[15]; short StbArray[15]; short SrqArray[15]; short i; i = 0; AddrArray[0] = 1; AddrArray[1] = 2; AddrArray[2] = -1; Ret = GpibSPollAll ( DevId, AddrArray, StbArray, SrqArray ); if ( Ret == 0 ) { while ( AddrArray[i] != -1 ) { if ( SrqArray [i] != 0 ) break; i++; } if ( SrqArray [i] != 0 ){ Printf ( "%ld\n", AddrArray[i] ); Printf ( "%ld\n", StbArray[i] ); } else { Printf ( "No SRQ\n" ); } } |
●GpPollEx |
||
DWORD Cmd[31]; DWORD Pstb[31]; DWORD Psrq[31]; short i , k; i = 0; Cmd[0]=2; Cmd[1]=1; Cmd[2]=2; Ret = GpPollEx ( Cmd, Pstb, Psrq ); if ( Ret == 0 ) { k = Psrq[0]; while ( j != 0 ) { if ( Psrq[i] != 0) { Printf ( "%ld\n", Cmd[i] ); Printf ( "%ld\n", Pstb[i] ); k--; } i++; } } else if ( Ret == 128 ) {
Printf ( "No SRQ\n" ); }
|
アドレス用変数を宣言 ステータスバイト用の変数を宣言 SRQ用の変数を宣言
アドレス1設定 アドレス2設定
シリアルポールを実行
正常終了した場合
SRQを送出したアドレスを表示 ステータスバイトを表示
SRQの送出機器がない ※ 出力する戻り値・配列構造が異なりますので、例では同等になるように調節しています |
short AddrArray[15]; short StbArray[15]; short SrqArray[15]; short i, k; i = 0; k = 0; AddrArray[0] = 1; AddrArray[1] = 2; AddrArray[2] = -1; Ret = GpibSPollAll ( DevId, AddrArray, StbArray, SrqArray ); if ( Ret == 0 ) {
while ( AddrArray[i] != -1 ) { if ( SrqArray [i] != 0 ) { Printf ( "%ld\n", AddrArray[i] ); Printf ( "%ld\n", StbArray[i] ); k++; } i++; } if ( k == 0) Printf ( "No SRQ\n" ); } } |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Stb, SrqFlag, EoiFlag; SrqFlag = 1; Stb = 10; EoiFlag = 1; Ret = GpSrqEx ( Stb, SrqFlag, EoiFlag ); |
変数を宣言 SRQ送出を設定 ステータスバイトを設定
SRQ・Stbを設定 ※EOIはGpibSetStatusの36Hで設定します |
short SrqSend, Stb; SrqSend = 1; Stb = 10;
Ret = GpibSendSRQ ( DevId, SrqSend, Stb ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Stb, Eoi; Ret = GpChkstb ( &Stb, &Eoi );
if ( Ret == 0) { if ( ( Stb & 0x20 ) != 0 ) { Printf ( "No Serial Polling\n" ); Printf ( "%ld\n", Stb ); } else { Printf ( "Serial Polling\n" ); Printf ( "%ld\n", Stb ); } } |
変数を宣言 チェックを実行
正常終了した場合 シリアルポールされたかどうか シリアルポールされていない Stb表示
シリアルポールされた Stb表示 ※EOIはGpibGetStatusの36Hで見ることができます |
short SPoll, Stb; Ret = GpibCheckSPoll ( DevId, &SPoll, &Stb ); if ( Ret == 0) { if ( SPoll == 0 ) { Printf ( "No Serial Polling\n" ); Printf ( "%ld\n", Stb ); } else { Printf ( "Serial Polling\n" ); Printf ( "%ld\n", Stb ); } } |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Fstb[32]; DWORD i =0;
Ret = GpDevFind ( Fstb );
if ( Ret == 0) { while(Fstb[i] != 255){ Printf ("%ld\n", Fstb[i]); i++; } } |
変数を宣言
相手機器アドレスを取得
正常終了した場合
取得したデータを出力 |
short PrmAddr, ScdAddr, ArraySize, AddrArray[30]; short i; PrmAddr = -1; ScdAddr = 0; ArraySize = 30; Ret = GpibFindListener ( Id, PrmAddr, ScdAddr, &ArraySize, AddrArray ); if ( Ret == 0){ for ( i = 0; i < ArraySize; i++ ){ Printf ("%ld\n", AddrArray[i]); } } |
DWORD Pad, Sad, Lstn; Pad = 1; Sad = 0;
Ret = GpDevFindEx ( Pad, Sad, &Lstn );
if ( Ret == 0) Printf ("%ld\n", Lstn); |
変数を宣言 一次アドレスを1 二次アドレスをなし
相手機器を検索
正常終了した場合 取得したデータを出力 |
short PrmAddr, ScdAddr, ArraySize, AddrArray[1]; PrmAddr = 1; ScdAddr = 0; ArraySize = 1; Ret = GpibFindListener ( Id, PrmAddr, ScdAddr, &ArraySize, AddrArray ); if ( Ret == 0) Printf ("%ld\n", ArraySize); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Reg; DWORD Preg; Reg = 0x08; Ret = GpBoardsts ( Reg, &Preg );
if ( Ret == 0) Printf ("%ld\n", Data); |
ステータス用変数を宣言 取得用変数を宣言 ステータスを設定 取得
正常終了した場合 取得したデータを出力 ※ステータス番号に変更はございません |
short Select; long Data; Select = 0x08; Ret = GpibGetStatus ( DevId, Select, &Data ); if ( Ret == 0) Printf ("%ld\n", Data); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
●取得 |
||
DWORD Reg; DWORD Preg; Reg = 0x08; Ret = GpBoardstsEx ( Reg, &Preg ); if ( Ret == 0) Printf ("%ld\n", Data); |
ステータス用変数を宣言 取得用変数を宣言 ステータスを設定 取得
正常終了した場合 取得したデータを出力 ※ステータス番号に変更はございません |
short Select; long Data; Select = 0x08; Ret = GpibGetStatus ( DevId, Select, &Data ); if ( Ret == 0) Printf ("%ld\n", Data); |
●設定 |
||
DWORD Reg; DWORD Preg; Reg = 0x08; Preg = 1; Ret = GpBoardstsEx ( Reg, &Preg ); |
ステータス用変数を宣言 設定用変数を宣言 ステータスを設定 設定値を設定 設定 ※ステータス番号に変更はございません |
short Select; long Data; Select = 0x08; Data = 1; Ret = GpibSetStatus ( DevId, Select, Data ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Bussta;
Ret = GpReadbus ( &Bussta );
if ( Ret = 0 )
Printf ("%x\n", Bussta); |
変数を宣言
コントロールラインの取得
ライン情報のみ取り出し コントロールを上位にシフト データラインの取得
正常終了の場合 ライン情報のみ取り出し データとコントロールを合成 ラインデータを出力 ※GpibReadLinesでは一回でデータとコントロールを取得することができません ※コントロールの各ラインのbit値が異なっていますので注意してください |
short Bussta; short LineStatus; Ret = GpibReadLines ( DevId, 0, LineStatus ); if ( Ret == 0 ) { LineStatus = LineStatus & 0xff; Bussta = LineStatus << 8; Ret = GpibReadLines ( DevId, 1, LineStatus ); if ( Ret = 0 ) { LineStatus = LineStatus & 0xff; Bussta = Bussta | LineStatus; Printf ("%x\n", Bussta); } } |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Cmd[31]; Cmd[0]=2; Cmd[1]=0x5f; Cmd[2]=0x3f;
Ret = GpComand ( Cmd ); |
コマンド用変数を宣言
UNTを設定 UNLを設定
コマンド送信 |
short CmdArray[255];
CmdArray[0] = 0x5f; CmdArray[1] = 0x3f; CmdArray[2] = -1; Ret = GpibSendCommands ( DevId, CmdArray ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
●GpSdc |
||
DWORD Adr;
Adr =3;
Ret = GpSdc ( Adr ); |
変数を宣言
アドレス3を設定
アドレスを登録
SDCを送信 |
short Talker, ListenerArray[15]; Talker = -1; ListenerArray[0] = 3; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); Ret = GpibSendDeviceClear ( DevId ); |
●GpDcl |
||
Ret = GpDcl ( ); |
変数を宣言
アドレスを登録
DCLを送信 |
short Talker, ListenerArray[15]; Talker = -1; ListenerArray[0] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); Ret = GpibSendDeviceClear ( DevId ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Adr;
Adr =3;
Ret = GpGet ( Adr ); |
変数を宣言
アドレス3を設定
アドレスを登録
GETを送信 |
short Talker, ListenerArray[15]; Talker = -1; ListenerArray[0] = 3; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); Ret = GpibSendTrigger ( DevId ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
DWORD Adr;
Adr =3;
Ret = GpGtl ( Adr ); |
変数を宣言
アドレス3を設定
アドレスを登録
GTLを送信 |
short Talker, ListenerArray[15]; Talker = -1; ListenerArray[0] = 3; ListenerArray[1] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); Ret = GpibChangeLocal ( DevId ); |
API-GPIB(98/PC) |
プログラム内容 |
新規関数 |
Ret = GpLlo ( ); |
変数を宣言
アドレスを登録
LLOを送信 |
short Talker, ListenerArray[15]; Talker = -1; ListenerArray[0] = -1; Ret = GpibSetAddrInfo ( DevId, Talker, ListenerArray ); Ret = GpibSendLocalLockout ( DevId ); |