Просмотр исходного кода

fix(serial/modbus): 调整串口通信相关超时和缓冲区处理

1. 调整modbus客户端和地址配置协议的默认超时从1.0秒改为2.0秒,适配较慢的串口通信响应
2. 移动串口接收缓冲区清空逻辑到锁保护区域内,避免多线程竞争导致的缓冲区清理异常
wenhongquan 10 часов назад
Родитель
Сommit
a7b1237eb4
2 измененных файлов с 3 добавлено и 5 удалено
  1. 2 2
      backend/modules/modbus_rtu.py
  2. 1 3
      backend/modules/serial_port.py

+ 2 - 2
backend/modules/modbus_rtu.py

@@ -96,7 +96,7 @@ class AddressConfigProtocol:
 
     def __init__(self, serial_port):
         self.serial = serial_port
-        self.default_timeout = 1.0
+        self.default_timeout = 2.0
         self.stored_devices = {}
 
     def add_stored_device(self, uid: str, address: int):
@@ -268,7 +268,7 @@ class ModbusRTUClient:
 
     def __init__(self, serial_port):
         self.serial = serial_port
-        self.default_timeout = 1.0
+        self.default_timeout = 2.0
 
     def _build_request(self, device_address: int, function_code: int, data: bytes = b'') -> bytes:
         """构建Modbus请求帧"""

+ 1 - 3
backend/modules/serial_port.py

@@ -365,12 +365,10 @@ class SerialPort:
         """sync send and wait (read from buffer, thread continues running)"""
         import time
         
-        # Clear buffer and send
-        self.raw_response_buffer.clear()
-        
         with self.lock:
             if not self.ser or not self.ser.is_open:
                 return b''
+            self.raw_response_buffer.clear()
             self.ser.reset_input_buffer()
             self.ser.write(data)
             self.ser.flush()