TG-PlatformPlus/default_scpi.py

52 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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()