前回の試みで、大まかには使えそうなことが分かった。
しかし、同時に任意波形は2048ポイント固定であることも判明した。
手始めに疑似ランダム符号を作ってみようと考えた。
でも、2の累乗じゃないんだよね。波形長が。
PRBS11だと2047ポイントなので、最後の1ポイントはゼロでいいやということにしてやってみた。
例によってPython初心者のオヤジなのでいろいろググりながらのプログラミングになる。しかし、どうしてもわからなかったのが、LISTの最初の項目をプラスするという、レジスタをシフトするやり方だった。しかしエイヤーでやってみたのがソウをこコウしたようだ。困難でほんとによいの?
import serial
from time import sleep
ser= serial.Serial('/dev/ttyUSB0', baudrate=115200, timeout=3.0)
cmd=':w20=0,0.\r\n' #Output=off
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)
c=0
cmd=''
prbs_reg11=[1,1,1,1,1,1,1,1,1,1,1] #PRBS11 modoki signal
while c<2047:
temp=prbs_reg11[8]^prbs_reg11[10]
prbs_reg11=[temp]+prbs_reg11
c=c+1
if c<2047:
cmd=cmd+str(temp*4095)+','
else:
cmd=cmd+str(temp*4095)
cmd=':a05='+str(cmd)+'.\r\n' #write to Arbmem 05
print(cmd)
bcmd=cmd.encode()
ser.write(bcmd)
sleep(0.05)
bcmd=''
a=''
a=ser.readline()
bcmd=a.decode()
print(bcmd)
cmd=':w21=105.\r\n' #waveform=Arbmemory 05
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)
cmd=':w23=1950000.\r\n' #Repeat Freq=19.5kHz
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)
cmd=':w20=1,1.\r\n'
bcmd=cmd.encode()
ser.write(bcmd)
a=ser.readline()
bcmd=a.decode()
print(bcmd)
ser.close()
これで信号が作成できたようだ。
これにより任意波形の作成もできたようだ。
でも、本物ではないのが残念だなー
1/19500000*11=275ns
大体あってるかな。まあ、飽く迄もどきなので・・・
相関関数どうなってんだろうね。まあいいや。