観測王DS-8706の画面キャプチャ―
岩通のデジタルストレージオシロスコープDS-8706にはRS-232C端子から画像データを出力する機能があります。ただ、古い機種なので、取り込むためのソフトウェアをどうするかという問題が解決しなければなりません。BMPファイルならデータのフォーマットが簡単なので、Pythonで読み込むプログラムを書いてみました。
# Iwatsu DS-8706 Screen Copy via RS-232C
# 2024 Feb. 27 by K. Inagaki
import serial
import time
COM="COM1"
ser = serial.Serial(COM, 19200, timeout=10)
outfile="wave.bmp"
#ser.open()
bftype=ser.read(2)
if bftype == b'BM' :
print("BMP data found.")
bf=open(outfile,"wb")
bf.write(bftype)
bfsize=ser.read(4)
bf.write(bfsize)
res1=ser.read(2)
bf.write(res1)
res2=ser.read(2)
bf.write(res2)
offset=ser.read(4)
bf.write(offset)
bcsize=ser.read(4)
bf.write(bcsize)
bcwidth=ser.read(4)
bf.write(bcwidth)
bcheight=ser.read(4)
bf.write(bcheight)
bcplane=ser.read(2)
bf.write(bcplane)
bcbcnt=ser.read(2)
bf.write(bcbcnt)
bccomp=ser.read(4)
bf.write(bccomp)
bisize=ser.read(4)
bf.write(bisize)
bixpm=ser.read(4)
bf.write(bixpm)
biypm=ser.read(4)
bf.write(biypm)
biclr=ser.read(4)
bf.write(biclr)
bicir=ser.read(4)
bf.write(bicir)
xsize=int.from_bytes(bcwidth, byteorder="little")
ysize=int.from_bytes(bcheight, byteorder="little")
csize=int.from_bytes(biclr,byteorder="little")
print(xsize," x ", ysize, ":", csize, " colors\n")
if csize == 2 :
print ("B/W file format")
cplatte1=ser.read(4)
bf.write(cplatte1)
cplatte2=ser.read(4)
bf.write(cplatte2)
datalen=int(xsize*ysize/8)
print(datalen,"bytes will be read.")
for i in range(datalen) :
pix=ser.read(1)
bf.write(pix)
else :
print ("Unsupported format")
bf.close()
else :
print ("Timeout")
ser.close()
このプログラムを動作させるためには、あらかじめPySerialをインストールしておく必要があります。プログラムの内容は、特に説明するところはないでしょう。実際に画面キャプチャーした例を示します。
テストに使ったのは半波整流回路の電圧波形です。プログラムを起動させてから10秒以内に本体のCOPYボタンを押してしばらくすると、wave.bmpというファイルが生成されます。あらかじめ、画面キャプチャ―の出力先をRS-232C、ファイルフォーマットをBMPに設定しておく必要があるのは言うまでもありません。 de JM8SMO
この記事が気に入ったらサポートをしてみませんか?