LoRa SCPI TXCスクリプト

1673 ワード

SCPIはプログラム制御機器にすぎず、ホスト側の駆動も必要です.USB/DC接続なので、PythonのPySerial駆動が一番簡単です.次は、PING文字列を循環的に送信するプロセスです.
#!/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()

改善できる点
  • time.sleep()は詰まり型で、ジェネレータに変更する必要があります.
  • はOOPではなく、重複コードがあります.
  • SCPIはAT命令セットより簡単ですが、SCPI受信側で文字列が失われていることがわかり、受信ファームウェアに問題があるのか、どこに問題があるのか、LAで追跡する必要があります.