积累修改;
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import time
|
||||
from pathlib import Path
|
||||
from serial import Serial
|
||||
from serial.tools import list_ports
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
from .tools import ByteConv
|
||||
from .function import protocols
|
||||
@@ -119,6 +121,7 @@ class DeviceSerial:
|
||||
'bytesize': 8,
|
||||
'stopbits': 1,
|
||||
}
|
||||
kwargs = kwargs if kwargs else None
|
||||
|
||||
serial_close = lambda com: com.close() if com.isOpen() else None
|
||||
serial_port_check = lambda port: port.upper() in (com.name for com in list_ports.comports())
|
||||
@@ -126,9 +129,13 @@ class DeviceSerial:
|
||||
match (self.__com, port, kwargs):
|
||||
case (None, str() as port, None):
|
||||
""" 使用默认参数打开串口 """
|
||||
if not serial_port_check(port):
|
||||
raise ValueError("无效串口端口: %s" % port)
|
||||
self.__com = Serial(port, timeout=0, **com_config)
|
||||
case (None, str() as port, dict() as kwargs):
|
||||
""" 使用指定参数打开串口 """
|
||||
if not serial_port_check(port):
|
||||
raise ValueError("无效串口端口: %s" % port)
|
||||
com_config['baudrate'] = kwargs['baudrate'] if 'baudrate' in kwargs.keys() else com_config['baudrate']
|
||||
com_config['parity'] = kwargs['parity'] if 'parity' in kwargs.keys() else com_config['parity']
|
||||
com_config['bytesize'] = kwargs['bytesize'] if 'bytesize' in kwargs.keys() else com_config['bytesize']
|
||||
@@ -136,19 +143,19 @@ class DeviceSerial:
|
||||
self.__com = Serial(port, timeout=0, **com_config)
|
||||
case (Serial() as com, None, None):
|
||||
""" 无参数重开串口 """
|
||||
serial_close(self.__com)
|
||||
serial_close(com)
|
||||
com.open()
|
||||
case (Serial() as com, port, None):
|
||||
""" 重新指定端口号并打开串口 """
|
||||
serial_close(self.__com)
|
||||
if serial_port_check(port):
|
||||
serial_close(com)
|
||||
if not serial_port_check(port):
|
||||
raise ValueError("无效串口端口: %s" % port)
|
||||
com.port = port
|
||||
com.open()
|
||||
case (None, str() as port, dict() as kwargs):
|
||||
case (Serial() as com, str() as port, dict() as kwargs):
|
||||
""" 重新指定端口号与配置并打开串口 """
|
||||
serial_close(self.__com)
|
||||
if serial_port_check(port):
|
||||
serial_close(com)
|
||||
if not serial_port_check(port):
|
||||
raise ValueError("无效串口端口: %s" % port)
|
||||
com.port = port
|
||||
com.baudrate = kwargs['baudrate'] if 'baudrate' in kwargs.keys() else com_config['baudrate']
|
||||
@@ -162,6 +169,26 @@ class DeviceSerial:
|
||||
|
||||
return self.__com.is_open
|
||||
|
||||
@abstractmethod
|
||||
def frame_read(self, daddr=0x60, dlen=0x50) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def frame_write_one(self, daddr=0x85, dval=-900) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def frame_write_dual(self, daddr=0x91, dval=600) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def frame_write_str(self, daddr=0x82, dval=[0x06, 0x05, 0x04, 0x03, 0x02, 0x01]) -> bool:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def frame_update(self, path_file: Path, makefile: bool = False) -> bool:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user