diff --git a/source/dev_Lamina.py b/source/dev_LaminaAdapter.py similarity index 93% rename from source/dev_Lamina.py rename to source/dev_LaminaAdapter.py index 28d5adc..9073dbd 100644 --- a/source/dev_Lamina.py +++ b/source/dev_LaminaAdapter.py @@ -110,13 +110,16 @@ modbus_map = { 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: self.com = Serial(com_name, baudrate=115200, parity='N', timeout=2) else: self.com =None + if 'frame_print' in kwargs.keys(): + self.frame_print = False + # 设置645协议地址 self.addr_645 = addr_645 # 设置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): self.block['data']['type'] = 'read' self.block['data']['data_addr'] = daddr @@ -139,14 +154,8 @@ class LaminaAdapter: if self.com is None: print(trans_list_to_str(frame)) - return - - 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) + else: + self._transfer_data(frame) def frame_write_one(self, daddr=0x85, dval=-900): self.block['data']['type'] = 'write_one' @@ -156,8 +165,8 @@ class LaminaAdapter: if self.com is None: print(trans_list_to_str(frame)) return - - self.com.write(bytearray(frame)) + else: + self._transfer_data(frame) def frame_write_dual(self, daddr=0x91, dval=600): self.block['data']['type'] = 'write_dual' @@ -167,8 +176,8 @@ class LaminaAdapter: if self.com is None: print(trans_list_to_str(frame)) return - - self.com.write(bytearray(frame)) + else: + self._transfer_data(frame) def frame_write_str(self, daddr=0x82, dval=[0x06, 0x05, 0x04, 0x03, 0x02, 0x01]): self.block['data']['type'] = 'write_str' @@ -178,8 +187,8 @@ class LaminaAdapter: if self.com is None: print(trans_list_to_str(frame)) return - - self.com.write(bytearray(frame)) + else: + self._transfer_data(frame) def frame_update(self, path_bin): """ 程序升级 @@ -259,8 +268,8 @@ if __name__=='__main__': 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_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_240520_0000_T1.11.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)