You need to enable JavaScript to run this app. 如何用Python字典将10个以上传感器ROM地址映射为Sensor-1类自定义名称
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python字典将10个以上传感器ROM地址映射为Sensor-1类自定义名称

传感器ROM映射功能实现方案

1. 核心实现思路

通过Python字典定义ROM地址和自定义传感器名的映射关系,新增串口数据解析逻辑提取ROM地址匹配映射即可,无需修改Arduino侧的输出逻辑。

2. 完整修改后代码

import csv
from time import time
import serial

# --------------------------配置区域开始--------------------------
# 1. 串口配置
SERIAL_PORT = "COM12"
BAUD_RATE = 57600
# 2. ROM-传感器名称映射字典,按实际传感器ROM添加即可,支持无上限扩展
ROM_SENSOR_MAP = {
    "28 46 04 1F 0D 00 00 74": "Sensor-1",
    "第二个传感器的ROM地址": "Sensor-2",
    "第三个传感器的ROM地址": "Sensor-3",
    # 继续按格式添加剩余传感器即可
    "第十个传感器的ROM地址": "Sensor-10"
}
# 3. CSV文件路径
CSV_PATH = "Sensor_data.csv"
# --------------------------配置区域结束--------------------------

# 初始化串口
ser = serial.Serial(SERIAL_PORT, baudrate=BAUD_RATE, bytesize=8, timeout=1)

# 打开CSV文件,首次写入自动添加表头
with open(CSV_PATH, "a+", encoding="utf-8", newline="") as f:
    writer = csv.writer(f, delimiter=',')
    # 移动文件指针到开头,判断是否为空文件,为空就写入表头
    f.seek(0)
    if len(f.readlines()) == 0:
        writer.writerow(["时间戳", "传感器名称", "温度值", "原始数值1", "原始数值2"])
    
    while True:
        s = ser.readline().decode().rstrip()
        if not s:
            continue
        # 解析串口数据
        try:
            # 拆分ROM地址和数值部分
            rom_part = s.split("ROM = ")[1].split(" value : ")[0].strip()
            value_part = s.split(" value : ")[1].strip().split(" ")
            # 匹配传感器名称,匹配不到默认返回Unknown-Sensor避免报错
            sensor_name = ROM_SENSOR_MAP.get(rom_part, "Unknown-Sensor")
            # 构造写入行
            row = [int(time()), sensor_name] + value_part
            print(row)
            writer.writerow(row)
            f.flush()
        except IndexError:
            # 解析失败跳过无效数据行,避免程序崩溃
            continue

3. 注意事项

  • 映射字典里的ROM地址要和Arduino输出的ROM字符串完全一致,包括空格,避免匹配失败
  • 后续新增传感器直接在ROM_SENSOR_MAP里加键值对即可,无需修改其他逻辑
  • 代码增加了异常捕获逻辑,遇到串口输出的异常格式数据会自动跳过,不会中断运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 05:57:02