[fix] 尝试修复录数据无法正确开始和停止的问题
- 数据开关无效
This commit is contained in:
parent
d4ce0dbe14
commit
925508fa4f
@ -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:
|
||||
"""停止数据记录"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user