LoRa SCPI TXCスクリプト
1673 ワード
SCPIはプログラム制御機器にすぎず、ホスト側の駆動も必要です.USB/DC接続なので、PythonのPySerial駆動が一番簡単です.次は、PING文字列を循環的に送信するプロセスです.
改善できる点 time.sleep()は詰まり型で、ジェネレータに変更する必要があります. はOOPではなく、重複コードがあります. SCPIはAT命令セットより簡単ですが、SCPI受信側で文字列が失われていることがわかり、受信ファームウェアに問題があるのか、どこに問題があるのか、LAで追跡する必要があります.
#!/usr/bin/env python
import serial
import time
import perference
import listport
ports = listport.serial_ports()
if len(ports):
print "{0} ports are available".format(len(ports))
port = ports[0]
print "port {0} is selected".format(port)
ser = serial.Serial(port, 9600, timeout = 0.5)
print("Port is opened\r
")
setups = [
"RA:MOD LORA",
"RA:FREQ 434",
"RA:PAS PA_BOOST",
"RA:OCP 170",
"RA:BGR 7",
"RA:POW 15",
"RA:OP STB",
]
queries = [
"*IDN?",
"RA:MOD?",
"RA:FREQ?",
"RA:PAS?",
"RA:OCP?",
"RA:BGR?",
"RA:POW?",
"RA:OP?",
]
actions = [
"RA:LORA:TXC 1",
"RA:FI \"PING\"",
"RA:OP STB",
]
for q in setups:
ser.write(q+'\r
')
print(ser.readline().strip())
time.sleep(0.1)
ser.write('\r
')
time.sleep(1)
ser.flush()
for q in queries:
ser.write(q+'\r
')
print(ser.readline().strip())
print(ser.readline().strip())
time.sleep(0.1)
ser.write('\r
')
time.sleep(1)
while True:
for q in actions:
ser.write(q+'\r
')
print(ser.readline().strip())
time.sleep(0.5)
ser.close()
改善できる点