【VBA】ReadIEEEBlock命令が使えない GPIBの計測機器の画面をBMPで出力
[プログラミング]Infiniiumを使っていますが、オシロの画面をPCに取り込むコマンドはありますか? | Keysight (formerly Agilent’s Electronic Measurement)
[プログラミング]InfiniiVisionシリーズ用のリモートプログラムを作成中です。画面の画像を、画像ファイルとして取り込む事は可能ですか? | Keysight (formerly Agilent’s Electronic Measurement)
BMP Windows bitmap | Keysight (formerly Agilent’s Electronic Measurement)
スペクトラムアナライザやオシロスコープと言ったGPIBの計測機器の画面をBMPで出力することが VISA-COMライブラリを使っていると可能なのですが。上記のサイトの様に
ReadIEEEBlock を使って返ってきたバイナリデータを読み取ろうとするとオートメーションエラー
-2147418113(8000ffff) になってしまうらしい・ω・
Dim byteData() As Byte Dim Scope As New VisaComLib.FormattedIO488 Dim RM As New VisaComLib.ResourceManager Scope.IO = RM.Open("GPIB0::8::INSTR") Scope.IO.Timeout = 30000 'Timeout 30sec Scope.WriteString "DL2" 'Delimiter EOI only Scope.WriteString "BMP?" ' Bitmap output byteData = Scope.ReadString() ' Bitmap as String Scope.WriteString "DL0" 'Delimiter CR/LF/EOI |
例えば、こんな感じで ReadString で読みだすと、
処理は進むのだが、データは当然破壊されて、ファイルに出力しても正常なBMPファイルにはならない
で、どうしたかと言うと
Dim fileNum Dim I As Long Dim byteBuffer As Byte Dim byteData() As Byte Dim Scope As New VisaComLib.FormattedIO488 Dim RM As New VisaComLib.ResourceManager Scope.IO = RM.Open("GPIB0::8::INSTR") Scope.IO.Timeout = 30000 'Timeout 30sec fileNum = FreeFile |
IO.Read だと読めるらしい(・ω・)
ちなみに、大概BMP機器は画面出力時のBMPサイズが決まっているので、それを最大値で指定すればOK
Comments