修改脚本文件名;

提取报文传输函数;
This commit is contained in:
何 泽隆
2024-05-23 20:19:13 +08:00
parent 5cf4246338
commit 438c180b5d

View File

@@ -110,13 +110,16 @@ modbus_map = {
class LaminaAdapter: class LaminaAdapter:
def __init__(self, com_name="COM16", addr_645=[0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA], addr_modbus=0x01): def __init__(self, com_name="COM16", addr_645=[0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA], addr_modbus=0x01, **kwargs):
# 初始化串口通信 # 初始化串口通信
if com_name is not None: if com_name is not None:
self.com = Serial(com_name, baudrate=115200, parity='N', timeout=2) self.com = Serial(com_name, baudrate=115200, parity='N', timeout=2)
else: else:
self.com =None self.com =None
if 'frame_print' in kwargs.keys():
self.frame_print = False
# 设置645协议地址 # 设置645协议地址
self.addr_645 = addr_645 self.addr_645 = addr_645
# 设置Modbus地址 # 设置Modbus地址
@@ -131,6 +134,18 @@ class LaminaAdapter:
}, },
} }
def _transfer_data(self, frame):
""" 报文数据传输 """
self.com.read_all()
self.com.write(bytearray(frame))
time.sleep(0.5)
frame_recv = self.com.read_all()
output_text = check_frame_dlt645(frame_recv, block=self.block)
print(output_text)
if self.frame_print:
print(trans_list_to_str(frame))
print(trans_list_to_str(frame_recv))
def frame_read(self, daddr=0x60, dlen=0x50): def frame_read(self, daddr=0x60, dlen=0x50):
self.block['data']['type'] = 'read' self.block['data']['type'] = 'read'
self.block['data']['data_addr'] = daddr self.block['data']['data_addr'] = daddr
@@ -139,14 +154,8 @@ class LaminaAdapter:
if self.com is None: if self.com is None:
print(trans_list_to_str(frame)) print(trans_list_to_str(frame))
return else:
self._transfer_data(frame)
self.com.read_all()
self.com.write(bytearray(frame))
time.sleep(0.5)
frame_recv = self.com.read_all()
output_text = check_frame_dlt645(frame_recv, block=self.block)
print(output_text)
def frame_write_one(self, daddr=0x85, dval=-900): def frame_write_one(self, daddr=0x85, dval=-900):
self.block['data']['type'] = 'write_one' self.block['data']['type'] = 'write_one'
@@ -156,8 +165,8 @@ class LaminaAdapter:
if self.com is None: if self.com is None:
print(trans_list_to_str(frame)) print(trans_list_to_str(frame))
return return
else:
self.com.write(bytearray(frame)) self._transfer_data(frame)
def frame_write_dual(self, daddr=0x91, dval=600): def frame_write_dual(self, daddr=0x91, dval=600):
self.block['data']['type'] = 'write_dual' self.block['data']['type'] = 'write_dual'
@@ -167,8 +176,8 @@ class LaminaAdapter:
if self.com is None: if self.com is None:
print(trans_list_to_str(frame)) print(trans_list_to_str(frame))
return return
else:
self.com.write(bytearray(frame)) self._transfer_data(frame)
def frame_write_str(self, daddr=0x82, dval=[0x06, 0x05, 0x04, 0x03, 0x02, 0x01]): def frame_write_str(self, daddr=0x82, dval=[0x06, 0x05, 0x04, 0x03, 0x02, 0x01]):
self.block['data']['type'] = 'write_str' self.block['data']['type'] = 'write_str'
@@ -178,8 +187,8 @@ class LaminaAdapter:
if self.com is None: if self.com is None:
print(trans_list_to_str(frame)) print(trans_list_to_str(frame))
return return
else:
self.com.write(bytearray(frame)) self._transfer_data(frame)
def frame_update(self, path_bin): def frame_update(self, path_bin):
""" 程序升级 """ 程序升级
@@ -259,8 +268,8 @@ if __name__=='__main__':
if not hasattr(__builtins__,"__IPYTHON__"): if not hasattr(__builtins__,"__IPYTHON__"):
# path_bin = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\SLCP001_240517_1100_T1.10.bin") # path_bin = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\SLCP001_240517_1100_T1.10.bin")
path_bin = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\SLCP001_240520_0000_T1.11.bin") # path_bin = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\SLCP001_240520_0000_T1.11.bin")
# path_bin = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\DGAPD_240516_0000_V1.10.bin") path_bin = Path(r"D:\WorkingProject\LightStackAdapter\software\lamina_adapter\tools\upgrade\SLCP001_240517_1800_V1.11.bin")
dev_lamina.frame_update(path_bin) dev_lamina.frame_update(path_bin)