TG-PlatformPlus/default_scpi.py

52 lines
1.6 KiB
Python
Raw Normal View History

2026-03-02 14:29:58 +08:00
import time
from datetime import datetime
recvData = bytearray() #接收的数据存放此数组
startTime = time.time()
# 将bytearray以字为单位转换成16进制字符串方便显示
def wordData2HexStr(data):
ret = ' '.join(data[i:i+2].hex() for i in range(0, len(data), 2))
return ret.upper()
# 获取当前时间字符串
def nowStr():
now = datetime.now()
ret = now.strftime('%H:%M:%S.') + f"{now.microsecond // 1000:03d}"
return ret
# 启动函数,命令开始会调用此函数
def start():
global tsdb
log_i('----------------- ' + cmdInfo['name'] + ' ----------------')
startTime = time.time() #记录启动时间
recvData = bytearray() #清空接收数组
attr = cmdInfo['attr']
cmdStr = attr['data'] + "\n" #组合要发送的报文,十六进制字符串
send(bytearray(cmdStr, encoding='utf-8'))
log_d(f"[{nowStr()}]TX:{cmdStr}")
return True
# 接收数据处理函数,当收到数据会调用此函数
def recvDataHandler(data):
global recvData
global tsdb,_G
recvData = recvData + bytearray(data)
tmpData = bytes(recvData).decode('utf-8')
# 此函数会被重复调用间隔10毫秒直到finish()
def loop():
global recvData
if time.time() > startTime + int(cmdInfo['attr']['rsp_timeout']) / 1000.0:
if len(recvData) > 0:
log_w(f"[{nowStr()}]RX timeout:{wordData2HexStr(recvData)}")
else:
log_w(f"[{nowStr()}]RX timeout")
log_e(f"[{devInfo['name']}]{cmdInfo['name']} fail.")
finish()