From 925508fa4f3b6ff418d2a4ebe45469e567e2dd93 Mon Sep 17 00:00:00 2001 From: "cuijingwei@brisonus.com" <12345678> Date: Wed, 19 Nov 2025 18:30:11 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=BD=95=E6=95=B0=E6=8D=AE=E6=97=A0=E6=B3=95=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E5=BC=80=E5=A7=8B=E5=92=8C=E5=81=9C=E6=AD=A2=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 数据开关无效 --- serial_recorder.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/serial_recorder.py b/serial_recorder.py index f654fa6..8dc0362 100644 --- a/serial_recorder.py +++ b/serial_recorder.py @@ -97,12 +97,12 @@ class SerialRecorder: self.serial = serial.Serial( port=self.port, baudrate=self.baudrate, - timeout=0.001, # 减小超时时间 + timeout=0.0001, # 减小超时时间 write_timeout=1, # 添加写入超时 bytesize=serial.EIGHTBITS, # 8位数据位 parity=serial.PARITY_NONE, # 无校验 stopbits=serial.STOPBITS_ONE, # 1位停止位 - rtscts=True # 启用硬件流控 + rtscts=False # 启用硬件流控 ) # 设置接收缓冲区大小 self.serial.set_buffer_size(rx_size=1024*1024) # 1MB接收缓冲区 @@ -182,7 +182,7 @@ class SerialRecorder: except Exception as e: self.logger.error(f"帧处理错误: {e}") - time.sleep(0.1) + time.sleep(0.001) def _check_and_save_frames(self): """检查并保存帧数据""" @@ -269,10 +269,10 @@ class SerialRecorder: while self.is_running: try: - if self.serial.in_waiting: # 读取数据 - chunk = self.serial.read(min(CHUNK_SIZE, self.serial.in_waiting)) + chunk = self.serial.read(self.serial.in_waiting or 1) chunk_size = len(chunk) + # self.logger.info(f"读取到数据,大小: {chunk_size} 字节") if chunk_size > 0: self.bytes_received += chunk_size @@ -283,7 +283,7 @@ class SerialRecorder: with self.buffer_lock: # 如果主缓冲区接近满,清空它 if len(self.buffer) > self.buffer_size * 0.9: - self.logger.warning("主缓冲区接近满,执行清空操作") + # self.logger.warning("主缓冲区接近满,执行清空操作") self.buffer.clear() self.buffer.extend(chunk) @@ -293,7 +293,7 @@ class SerialRecorder: if len(self.current_save_buffer) >= self.save_buffer_size: # 等待保存线程处理完上一个缓冲区 while self.save_buffer_full and self.is_running: - time.sleep(0.01) + time.sleep(0.0001) if not self.is_running: break @@ -302,7 +302,7 @@ class SerialRecorder: self.current_save_buffer = self.save_buffer_b if self.current_save_buffer == self.save_buffer_a else self.save_buffer_a self.save_buffer_full = True self.save_buffer_event.set() - self.logger.info(f"切换到新的保存缓冲区,当前缓冲区大小: {len(self.current_save_buffer)}") + # self.logger.info(f"切换到新的保存缓冲区,当前缓冲区大小: {len(self.current_save_buffer)}") self.current_save_buffer.extend(chunk) @@ -319,15 +319,11 @@ class SerialRecorder: # 检查数据超时 if time.time() - self.last_data_time > 5.0: # 5秒超时 self.error_count += 1 - self.logger.warning(f"数据接收超时 ({self.error_count}/{self.max_errors})") + # self.logger.warning(f"数据接收超时 ({self.error_count}/{self.max_errors})") if self.error_count >= self.max_errors: - self.logger.error("达到最大错误次数,停止记录") + self.logger.error("数据接收超时,达到最大重试次数,停止记录") self.is_running = False break - time.sleep(0.1) - - else: - time.sleep(0.001) # 无数据时短暂休眠 except Exception as e: self.logger.error(f"读取数据错误: {e}") @@ -336,7 +332,6 @@ class SerialRecorder: self.logger.error("达到最大错误次数,停止记录") self.is_running = False break - time.sleep(0.1) def stop(self) -> bool: """停止数据记录"""