201 lines
9.0 KiB
Python
201 lines
9.0 KiB
Python
import time
|
|
from pathlib import Path
|
|
from device.LaminaAdapter import LaminaAdapter
|
|
from device.LaminaAdapter import GeneratePackage_SLCP001_p4a0, GeneratePackage_SLCP101_p460, GeneratePackage_DLSY001_p460
|
|
from device.LaminaAdapter import GeneratePackage_SLCP102_p460
|
|
from device.tools.ByteConv import trans_list_to_str, trans_str_to_list
|
|
|
|
def test_communication(time_out=2):
|
|
""" 通信成功率测试 """
|
|
time_start = time.time()
|
|
param_saved = dev_lamina.flag_print, dev_lamina.retry, dev_lamina.time_out
|
|
dev_lamina.flag_print = False
|
|
dev_lamina.retry = 1
|
|
try:
|
|
while True:
|
|
dev_lamina.frame_read(0x0C, 0x20)
|
|
print(f"Time Stamp: {time.ctime()}")
|
|
print(f"Success Frame: {dev_lamina.log['read']}")
|
|
print(f"Failed Frame: {dev_lamina.log['send'] - dev_lamina.log['read']}")
|
|
print(f"Max Series Failed Frame: {dev_lamina.log['keep-fail']}")
|
|
time.sleep(time_out)
|
|
finally:
|
|
time_end = time.time()
|
|
print("Test Result: ")
|
|
print(f"Time Start: {time.strftime(r'%Y-%m-%d %H:%M:%S', time.localtime(time_start))}, \tTime End: {time.strftime(r'%Y-%m-%d %H:%M:%S', time.localtime(time_end))}")
|
|
print(f"Time Elapsed: {time_end - time_start}")
|
|
print(f"Success Rate: {dev_lamina.log['read'] / dev_lamina.log['send'] * 100}%")
|
|
dev_lamina.flag_print, dev_lamina.retry, dev_lamina.time_out = param_saved
|
|
|
|
|
|
def make_Pakeage(fp: Path, func):
|
|
""" 生成升级包 """
|
|
|
|
hex_update = fp
|
|
file_package = fp.parent / f'{hex_update.stem}.dat'
|
|
file_update_bin = fp.parent / f'{hex_update.stem}.bin'
|
|
|
|
data_package, data_update_bin = func(hex_update)
|
|
|
|
file_package.write_bytes(data_package)
|
|
file_update_bin.write_bytes(data_update_bin)
|
|
|
|
return file_package
|
|
|
|
|
|
def test():
|
|
if 0:
|
|
dev_lamina.frame_read(0xA9, 1) # 读ADC参考电压
|
|
dev_lamina.frame_write_one(0xA9, 2000) # 写ADC参考电压:2.0V
|
|
dev_lamina.frame_write_one(0xA9, 3300) # 写ADC参考电压:3.3V
|
|
dev_lamina.frame_read(0x13, 1) # 读输入电压
|
|
dev_lamina.frame_read(0x16, 1) # 读输出电压
|
|
dev_lamina.frame_read(0x97, 4) # 读校准参数: Vin_a, Vin_b, Vout_a, Vout_b
|
|
dev_lamina.frame_write_one(0x97, 1000) # 写校准参数Vin_a: 1.000
|
|
dev_lamina.frame_write_one(0x97, 1500) # 写校准参数Vin_a: 1.500
|
|
dev_lamina.frame_write_one(0x98, 100) # 写校准参数Vin_b: 1.00
|
|
dev_lamina.frame_write_one(0x98, 150) # 写校准参数Vin_b: 1.50
|
|
dev_lamina.frame_write_one(0x99, 1000) # 写校准参数Vout_a: 1.000
|
|
dev_lamina.frame_write_one(0x99, 1500) # 写校准参数Vout_a: 1.500
|
|
dev_lamina.frame_write_one(0x9A, 1000) # 写校准参数Vout_a: 1.00
|
|
dev_lamina.frame_write_one(0x9A, 1500) # 写校准参数Vout_a: 1.50
|
|
if 0:
|
|
dev_lamina.frame_write_str(0x82, [0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA])
|
|
dev_lamina.frame_write_str(0x82, [0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
|
|
dev_lamina.frame_write_str(0x82, [0x0A, 0x00, 0x00, 0x00, 0x00, 0x00])
|
|
dev_lamina.frame_write_str(0x82, [0xFF, 0x00, 0x00, 0x00, 0x00, 0x00])
|
|
dev_lamina.frame_write_str(0x82, [0xA1, 0x00, 0x00, 0x00, 0x00, 0x00])
|
|
dev_lamina.frame_write_str(0x82, [0x1A, 0x00, 0x00, 0x00, 0x00, 0x00])
|
|
dev_lamina.frame_write_str(0x82, [0x99, 0x99, 0x99, 0x99, 0x99, 0x99])
|
|
dev_lamina.frame_write_str(0x82, [0x00, 0x00, 0x00, 0x00, 0x00, 0x01])
|
|
if 0:
|
|
dev_lamina.frame_write_one(0x52, 0x01)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_write_one(0x50, 0x00)
|
|
if 0:
|
|
while 1:
|
|
code_mes = input("扫描数据")
|
|
temp = code_mes[5:7] + code_mes[-10:]
|
|
code_addr = [int(temp[i:i+2], 16) for i in range(0, len(temp), 2)]
|
|
print(f"扫描结果: {code_mes}")
|
|
print(f"载波地址: {trans_list_to_str(code_addr)}")
|
|
dev_lamina.frame_read(0x100, 0x20)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_write_str(0x0180, list(code_mes))
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_read(0x180, 0x10)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_write_str(0x82, code_addr)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_read(0x80, 0x08)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_write_one(0xA3, 0x01)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_write_one(0x51, 0x01)
|
|
time.sleep(5)
|
|
dev_lamina.frame_read(0x0E, 0x13)
|
|
time.sleep(5)
|
|
dev_lamina.frame_read(0x0E, 0x13)
|
|
time.sleep(0.5)
|
|
dev_lamina.frame_write_one(0x50, 0x00)
|
|
if 0:
|
|
dev_lamina.frame_write_one(0x0054, 0x01)
|
|
dev_lamina.frame_read(0x000E, 0x02)
|
|
dev_lamina.frame_write_one(0x0054, 0x03)
|
|
dev_lamina.frame_read(0x000E, 0x02)
|
|
dev_lamina.frame_write_one(0x0054, 0x07)
|
|
dev_lamina.frame_read(0x000E, 0x02)
|
|
dev_lamina.frame_write_one(0x0054, 0x06)
|
|
dev_lamina.frame_read(0x000E, 0x02)
|
|
dev_lamina.frame_write_one(0x0054, 0x04)
|
|
dev_lamina.frame_read(0x000E, 0x02)
|
|
dev_lamina.frame_write_one(0x0054, 0x00)
|
|
dev_lamina.frame_read(0x000E, 0x02)
|
|
if 0:
|
|
dev_lamina.frame_read(0x0E, 0x14)
|
|
if 0:
|
|
dev_lamina.frame_read(0x60, 0x60)
|
|
if 0:
|
|
dev_lamina.frame_read(0x70, 0x02)
|
|
dev_lamina.frame_write_one(0x70, 2100)
|
|
dev_lamina.frame_write_one(0x71, 2200)
|
|
dev_lamina.frame_read(0x70, 0x02)
|
|
dev_lamina.frame_write_one(0x70, 2300)
|
|
dev_lamina.frame_write_one(0x71, 2100)
|
|
dev_lamina.frame_read(0x70, 0x02)
|
|
if 0:
|
|
dev_lamina.frame_write_str(0x0170, list("SN202405201117-1"))
|
|
dev_lamina.frame_write_str(0x0180, list("MES202405201117-2"))
|
|
dev_lamina.frame_write_str(0x0190, list("D202405211500-3"))
|
|
time.sleep(2)
|
|
dev_lamina.frame_read(0x0170, 0x30)
|
|
|
|
|
|
if __name__=='__main__':
|
|
mode_config = {
|
|
"Log": {'com_name': None,
|
|
# 'addr_645': [0x01, 0x00, 0x00, 0x00, 0x00, 0x40],
|
|
},
|
|
"Debug": {'com_name': 'COM3', 'baudrate': 115200, 'parity': 'N', 'bytesize': 8, 'stopbits': 1,
|
|
# 'addr_645': [0x01, 0x02, 0x03, 0x04, 0x05, 0x06],
|
|
'frame_print': True,
|
|
'time_out': 0.5, 'retry': 1, 'retry_sub': 10},
|
|
"HPLC": {'com_name': 'COM9', 'baudrate': 9600, 'parity': 'E', 'bytesize': 8, 'stopbits': 1,
|
|
'addr_645': trans_str_to_list("02 01 00 00 24 20"),
|
|
'frame_print': True,
|
|
'time_out': 3, 'time_gap': 0.1, 'retry': 3, 'retry_sub': 10},
|
|
}
|
|
|
|
dev_lamina = LaminaAdapter(type_dev="SLCP001", **mode_config['Debug'])
|
|
|
|
dev_lamina.frame_read(0x0100, 0x20)
|
|
# dev_lamina.frame_write_one(0x51, 0x01)
|
|
# dev_lamina.frame_read(0x1A0, 0x20)
|
|
# dev_lamina.frame_log()
|
|
# dev_lamina.frame_read(0x1A0, 0x20)
|
|
|
|
# 工程-即时转换
|
|
if dev_lamina.device == 'SLCP001':
|
|
file_hex = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\release\device_V1\lamina_adapter\Debug\lamina_adapter.hex")
|
|
elif dev_lamina.device == 'SLCP101':
|
|
file_hex = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\release\device_V2.03\lamina_adapter\Debug\lamina_adapter.hex")
|
|
elif dev_lamina.device == 'SLCP102':
|
|
file_hex = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\release\device_V3.01\lamina_adapter\Debug\lamina_adapter.hex")
|
|
elif dev_lamina.device == 'DLSY001':
|
|
file_hex = Path(r"D:\WorkingProject\LightStackOptimizer\software\lamina_optimizer\lamina_optimizer\Debug\lamina_optimizer.hex")
|
|
else:
|
|
file_hex = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\lamina_adapter\Debug\lamina_adapter.hex")
|
|
if not file_hex.exists():
|
|
raise Exception("工程编译目标文件不存在.")
|
|
print(dev_lamina.device)
|
|
print(file_hex)
|
|
|
|
if not hasattr(__builtins__,"__IPYTHON__"):
|
|
version = "SLCP101_241030_2000_V2.03"
|
|
addr = [0x24, 0x09, 0x12, 0x00, 0x00, 0x00]
|
|
|
|
while True:
|
|
""" 自动检测升级流程 """
|
|
ret = False
|
|
while not ret or ('Regs' not in dev_lamina.output.keys()) or (version == dev_lamina.output['Regs'][0x0100][1].strip('\000')):
|
|
# dev_lamina.frame_read(0x82, 3)
|
|
ret = dev_lamina.frame_read(0x0100, 0x20)
|
|
time.sleep(1)
|
|
|
|
dev_lamina.frame_update(file_hex, makefile=True)
|
|
|
|
time.sleep(3)
|
|
|
|
ret = dev_lamina.frame_read(0x0100, 0x20)
|
|
|
|
if ret and (version == dev_lamina.output['Regs'][0x0100][1]):
|
|
dev_lamina.frame_write_one(0x52, 0x01)
|
|
|
|
# print(f"address: {' '.join(map(lambda x: ('000' + hex(x)[2:])[-2:], addr))}")
|
|
# dev_lamina.frame_write_str(0x82, addr)
|
|
# dev_lamina.frame_read(0x82, 3)
|
|
# addr[5] += 1
|
|
# if addr[5] & 0x0F >= 10:
|
|
# addr[5] += 0x10 - 10
|
|
|