You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取RedBoard QWIIC传感器数据:解决末尾值换行缩进问题

解决串口读取传感器数据时末尾数值换行缩进的格式问题

你的问题核心是传感器输出的原始数据中可能包含隐藏的换行/回车符(即使你改成空格,传感器可能仍在某些位置输出了\r或\n),导致readline()读取到的字符串本身就带有分段的换行,最终写入文件时格式混乱。下面是修改后的代码和关键说明:

修改后的代码

import serial
import time

serialPort_1 = 'COM3'
baud_rate = 9600
write_to_file_path = "test 1 7-21-22.txt"

# 用with语句自动管理文件和串口,避免资源泄漏
with open(write_to_file_path, "w+") as output_file, serial.Serial(serialPort_1, baud_rate, timeout=4) as ser1:
    while True:
        line1 = ser1.readline()
        if not line1:
            continue  # 超时无数据时跳过
        
        # 解码后清除字符串两端所有空白字符(包括多余换行、回车、空格)
        cleaned_line = line1.decode("utf-8").strip()
        if not cleaned_line:
            continue  # 跳过空行
        
        # 拼接时间戳和清理后的数据,手动添加标准换行
        log_entry = f"{time.strftime('%m/%d/%Y %H:%M:%S')} {cleaned_line}\n"
        print(log_entry.rstrip())  # 打印时去掉末尾换行,避免重复输出空行
        output_file.write(log_entry)
        output_file.flush()  # 强制写入文件,避免缓冲区延迟
        
        time.sleep(0.00001)

关键修改点说明

  • strip()方法:彻底清除读取到的字符串前后的所有空白字符(包括传感器可能输出的\r、\n、多余空格或制表符),从根源上解决末尾数值被换行拆分的问题。
  • 手动添加\n:保证每条日志记录在文件中单独占一行,格式完全可控,不会受原始数据中的异常换行影响。
  • with语句:自动处理文件和串口的关闭操作,避免程序意外退出时出现资源占用或数据丢失。
  • 空行过滤:跳过无效的空数据行,让生成的日志文件更干净。
  • flush()强制写入:确保数据实时写入文件,避免缓冲区积累导致的内容延迟或丢失。

内容的提问来源于stack exchange,提问作者czar1249

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 14:24:19