From 438c180b5db6783bd9f90d012b430cf03a910683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=20=E6=B3=BD=E9=9A=86?= Date: Thu, 23 May 2024 20:19:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=84=9A=E6=9C=AC=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=90=8D;=20=E6=8F=90=E5=8F=96=E6=8A=A5=E6=96=87?= =?UTF-8?q?=E4=BC=A0=E8=BE=93=E5=87=BD=E6=95=B0;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{dev_Lamina.py => dev_LaminaAdapter.py} | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) rename source/{dev_Lamina.py => dev_LaminaAdapter.py} (93%) 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)