- 締切済み
VB6.0でVISAを用いる
VB6.0でVISAを用いてプログラミングしているのですが、 機器の状態を取得するところで躓いています。 ":AM:STA?"というコマンドを使うのですが Call viVPrintf(vi, ":AM:STAT?" + Chr$(10), 0) と打った後、戻り値の取得方法が分かりません。 viVPrintfで良いのかも自信がありません。(もしかして、viVScanf?)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
どこかで見たような質問だなあ・・と思っていたら、 以前回答したものに酷似していたので、 http://okwave.jp/qa/q6860430.html 上記では、戻り値は関数viVScanfで受け取るようです。 回答した関数は、 stats = viVScanf(vi,"%t" , RecvData1) なお、受け取る変数RecvData1を固定長文字列にして、 Dim RecvData1 As String * 10000 としている部分は VISAによるプログラミング http://ena.tm.agilent.com/e5071c/manuals/webhelp/jpn/programming/vba_programming/controlling_peripherals/programming_with_visa.htm によると、100でも受け取ることができるようですが、 このあたりは、実際にあわせて変更してみてはどうでしょうか。 なお、VISA.dllを使用したプログラミングはたとえば viVPrintf viVScanf などでググればCあるいはC++でのコードが ヒットしますので、そのあたりから引数などを 確認してみてください。
- uruz
- ベストアンサー率49% (417/840)
GPIBコマンドを使って通信する場合、戻り値があるコマンドの時はコマンド送信後、受信動作が必要です。 viVPrintf()は送信だけを行う関数です。戻り値の受信にはviVScanf()関数を使用します。 プログラムの流れ: 1)viVPrintf()でコマンド送信 2)viVScanf()で戻り値を受信 測定器メーカーがVISA関数ライブラリを提供していれば機器固有のVISA関数での通信ができます。 VISA関数ではGPIBコマンドは使用せずAPIを使用するような感じで機器をコントロールすることができます。