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: """停止数据记录"""