名前 題名 ▼ 真空管さん > ▼ たてぐやさん > > 12年ほど前ですが、インピーダンス計を使って自動測定・ > > 作図を手がけたことがあります。 > > 測定器は横河HPのHP=4192A、GPIBはRATOC sytemsの > > REX-USB220です。 > > GPIBのITFは付属のDLL(U2GPLIB.DLL)をそのまま使い、 > > DLLの呼び出しは付属のDelphi用の定義ファイルが使えました。 > > ツールはDelphi4。 > > > 昔のことですっかり忘れてしまい、今はリタイアモードで > > 小原章介やってまして、参考にもならないと思いますが > > GPIB絡みの部分を以下に抜き出して見ました。 > > // 少々長くてごめんなさい。 > > > IDS_MYGPIBADRS: TEdit; > > IDE_GPIBADRS: TEdit; > > IDS_STATUS: TEdit; > > end; > > > MyGpibAdrs: Integer; // USB-GPIBのGPIBアドレス > > GpAdrsBuf: String; // 使用するGPIB機器のGPIBアドレス > > > procedure TMainForm.FormCreate(Sender: TObject); > > var DtLen:integer; > > begin > > > // USB-GPIBアドレスを初期化 > > //MyGpibAdrs := 0; > > IDS_MYGPIBADRS.Text := IntToStr(MyGpibAdrs); > > // GPIB機器アドレスを初期化 > > //GpAdrsBuf := '1'; > > IDE_GPIBADRS.Text := GpAdrsBuf; > > end; > > > // GPIB 初期化ボタン > > procedure TMainForm.BtnGPINITClick(Sender: TObject); > > var > > GpStatus: Integer; szCommand: String; > > begin > > szCommand := 'H0KM01'; > > > IDS_STATUS.Text := ''; > > MainForm.Refresh(); // 再描画 > > > // GPIBコントローラ初期化 > > GpStatus := gp_init(MyGpibAdrs, 0, 0); > > if GpStatus <> 0 then > > begin > > szBuf := 'gp_init() error [' + IntToStr(GpStatus) + ']'; > > IDS_STATUS.Text := szBuf; > > Exit; > > end; > > > // IFCラインをTRUEにする > > gp_cli(); > > > // RENラインをTRUEにする > > gp_ren(); > > > // HP3478Aで設定されているGPIB機器アドレス取得 > > GpAdrsBuf := IDE_GPIBADRS.Text; > > > // GPIBバスタイムアウト時間を3秒に設定 > > GpStatus := gp_tmout(3); > > if GpStatus <> 0 then > > begin > > szBuf := 'gp_tmout() error [' + IntToStr(GpStatus) + ']'; > > IDS_STATUS.Text := szBuf; > > Exit; > > end; > > > // SDCコマンド送出 > > GpStatus := gp_clr(GpAdrsBuf); > > if GpStatus <> 0 then > > begin > > szBuf := 'gp_clr() error [' + IntToStr(GpStatus) + ']'; > > IDS_STATUS.Text := szBuf; > > Exit; > > end; > > > // LLOコマンド送出 > > GpStatus := gp_llo(); > > if GpStatus <> 0 then > > begin > > szBuf := 'gp_llo() error [' + IntToStr(GpStatus) + ']'; > > IDS_STATUS.Text := szBuf; > > Exit; > > end; > > > // HP3478A GPIBコマンド送信 > > { GpStatus := gp_wrt(GpAdrsBuf, szCommand); > > if GpStatus <> 0 then > > begin > > szBuf := 'gp_wrt() error [' + IntToStr(GpStatus) + ']'; > > IDS_STATUS.Text := szBuf; > > Exit; > > end; } > > > IDS_STATUS.Text := '初期化正常終了'; > > GPIBinz := True; > > IDB_START.Enabled := TRUE; > > end; > > > // GPIBコマンド送信ボタン > > procedure TMainForm.Button1Click(Sender: TObject); > > var > > GpStatus: Integer; txStr: string; > > begin > > txStr := Edit7.Text; > > GpStatus := gp_wrt(GpAdrsBuf,txStr); > > if GpStatus <> 0 then > > begin > > szBuf := 'gp_wrt() error [' + IntToStr(GpStatus) + ']'; > > IDS_STATUS.Text := szBuf; > > Exit; > > end; > > HPOK := True; > > end; > > > // 受信ボタン > > procedure TMainForm.Button2Click(Sender: TObject); > > var > > Status: Integer; // 関数の戻り値を示す > > RxBuf: String; // 受信データ格納用バッファ > > RxLen: Integer; // 受信バッファサイズ > > begin > > > // テキストボックス初期化 > > IDS_STATUS.Text := '受信中・・・'; > > Application.ProcessMessages; > > > // 受信用バッファの初期化 > > RxLen := 1024; > > RxBuf := StringOfChar(#0, RxLen); > > Status := gp_red(GpAdrsBuf, RxBuf, RxLen); > > if Status <> 0 then > > begin > > IDS_STATUS.Text := ''; > > szBuf := 'gp_red() error: ' + IntToStr(Status); > > MessageBox(Handle, PChar(szBuf),'GPIB受信', MB_OK); > > end > > else > > begin > > IDS_STATUS.Text := '受信完了'; > > // 受信データ表示 > > Edit8.Text := RxBuf; > > end; > > > // ハンドシェイク数の取得 > > Status := gp_count(); > > IDT_RXCNT.Caption := IntToStr(Status); > > > end; > > > Procedure TMainForm.MeasEx; //測定実行 > > var state:integer; i: integer; rxs:string; > > begin > > > for i := 0 to Fsteps - 1 do > > begin > > Edit7.Text := 'EX'; //トリガ > > Button1Click(self); // 送信ボタン > > WaitnMs(100); > > state := gp_wsrq(5); //5秒間SQR待ち > > Button2Click(self); // 受信ボタン > > if (state <> 0) or Chudan then Exit;] > > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link