でUSBTMC機器の呼び出しはできた。
しかし、まだ謎が解明していないのは、*OPC?が効かないのだ。
Tektronixのオシロスコープだと、
ACQUIRE:StopAFTER SEQUENCE
AQUIRE:STATE ON
*OPC? で1が返るのを待つ
という流れだが、Keysightのオシロスコープでは、これが通用しない。
マニュアルには、*OPC?が1を返すと書いてあるが、マニュアルがまだ見足りないのだろう。マニュアルの中のサンプルプログラムを見ると、*OPC?を送りつつ、Operation Status Event RegisterのBIT3を参照してループを作っている。
どう見てもこれで判断してるでしょう。
サンプルを書き換えて下記の様にしてみた。
import usbtmc
from time import sleep
#print(usbtmc.list_resources())
instr = usbtmc.Instrument(10893,923)
instr.timeout=10000
print(instr.ask("*IDN?"))
instr.write ("*RST")
instr.write(":RECall:SETup 2")
#sleep (1)
instr.write("WGEN:FREQuency 0.2") #内蔵の信号発生器の周波数設定 0.2Hz
#instr.ask("*OPC?")
instr.write(":TRIGger:SWEep Normal")
for i in range(5):
instr.ask("*OPC?")
instr.write("single")
i=8
while i==8:
k=instr.ask("OPERegister:CONDition?")
l=int(k) & 8 #Bit3=1 then running Wait for Bi3=0
#print(l);
#sleep(0.1)
i==+1
print(i+1)
信号発生器の周波数を0.2Hzにして波形を観測すると、きちんとトリガを待っているのが確認できた。
そこで、*OPC?の問い合わせの行を消してみたが、動作は変わらなかった。
*OPC?いらないじゃん。
今度、メーカーの人に聞いてみよう。
これに以前書いた画像取り込みの部分を加えてみよう。
しかし、USBTMCを使用しているため、微妙に予約されたコマンドが異なるようだ。
import time
from datetime import datetime
import usbtmc
from time import sleep
#print(usbtmc.list_resources())
instr = usbtmc.Instrument(10893,923)
instr.timeout=10000
print(instr.ask("*IDN?"))
instr.write ("*RST")
instr.write(":RECall:SETup 2")
#sleep (1)
instr.write("WGEN:FREQuency 0.2")
#instr.ask("*OPC?")
instr.write(":TRIGger:SWEep Normal")
for i in range(5):
#instr.ask("*OPC?")
instr.write("single")
l=8
while l==8:
k=instr.ask("OPERegister:CONDition?")
l=int(k) & 8 #Bit3=1 then running Wait for Bi3=0
#print(l);
#sleep(0.1)
i==+1
print(i+1)
instr.write("SAVE:IMAGE:FORMAT PNG")
dt=datetime.now()
filename = dt.strftime("/home/pi/WAVECH1_%Y%m%d_%H%M%S%f.png")
instr.write("DISPlay:DATA? PNG, color")
Len_sDisplay = instr.read_raw(10) #Read preamble 10Bytes "#800xxxxxxUS" first
sDisplay=instr.read_raw()
f = open(filename,"wb")
f.write(sDisplay)
instr.ask("*OPC?")
f.close() #8から始まるByte数を表すデータがついてきてしまうようなのだ。
print("Screen image written to "+filename)
instr.close()
これで、トリガがかかるごとに画像を取り込むことができるようになった。
取り込みにはやはり、約2秒かかっている。