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

使用pyserial读取热电偶数据及配置DAQ设备的技术咨询

MCC USB-204热电偶采集+CSV存储实现方案

首先明确核心问题:你找到的pyserial示例不能仅替换端口号直接使用。Measurement Computing USB-204本身不是原生虚拟串口类DAQ设备,不会在系统中生成标准COM/ttyACM串口节点,直接用pyserial无法识别到该设备,这是最容易踩的初始误区。


正确实现步骤

1. 安装匹配的驱动与依赖

  • Windows端先安装MCC官方InstaCal配置工具,在工具中选对热电偶类型(J/K/T/S等)、接入通道,确认工具内可正常读取温度数值后再进行代码开发
  • Linux/macOS端安装MCC官方UL跨平台驱动库
  • Python端不要使用pyserial,安装官方适配的uldaq(跨平台)或mcculw(Windows专属)库实现设备通信,这是官方维护的原生通信接口,稳定性远高于第三方逆向实现。

2. 可直接运行的采集+存CSV代码

import csv
import time
from uldaq import (
    get_daq_device_inventory, DaqDevice, InterfaceType,
    TempSensorType, TcInputRange, AiChanType, TcScale
)

# 按需修改以下配置
TC_CHANNEL = 0                  # 热电偶接入的模拟通道号
TC_TYPE = TempSensorType.TYPE_K # 替换为实际使用的热电偶型号
SAVE_FILE = "tc_temp_data.csv"
SAMPLE_INTERVAL = 1             # 采样间隔,单位秒

# 初始化连接USB-204设备
device_list = get_daq_device_inventory(InterfaceType.USB)
daq_dev = DaqDevice(device_list[0])
ai_module = daq_dev.get_ai_device()
daq_dev.connect()

# 配置对应通道为热电偶输入模式
ai_module.set_chan_type(TC_CHANNEL, AiChanType.TC)
ai_module.set_tc_type(TC_CHANNEL, TC_TYPE)
ai_module.set_range(TC_CHANNEL, TcInputRange.BUILT_IN)

# 写入CSV表头并启动循环采集
with open(SAVE_FILE, "w", newline="", encoding="utf-8") as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(["timestamp_unix", "temp_celsius"])
    
    try:
        while True:
            current_ts = time.time()
            current_temp = ai_module.t_in(TC_CHANNEL, TcScale.CELSIUS)
            print(f"采样值:{current_temp:.2f} ℃")
            csv_writer.writerow([current_ts, round(current_temp, 2)])
            f.flush() # 强制实时写入磁盘,避免程序异常退出丢数据
            time.sleep(SAMPLE_INTERVAL)
    except KeyboardInterrupt:
        print("\n采集已终止,数据已保存至目标文件")
        daq_dev.disconnect()

特殊情况:如果你额外加了串口转换模块才用pyserial

如果你的硬件链路是USB-204输出接了额外的单片机/转换板做串口透传,才需要用pyserial方案,此时除了替换端口号,还要完成3项必要配置:

  • 补全串口初始化参数:必须和串口输出端的波特率、数据位、停止位、校验位完全匹配,原示例代码未显式声明这些参数,默认使用9600波特率、8数据位、1停止位、无校验,参数不匹配会读到全乱码。正确初始化写法参考:ser = serial.Serial(port='/dev/ttyACM0', baudrate=115200, timeout=1)
  • 端口权限与编号确认:Windows下在设备管理器查看对应COM号,Linux下需将当前用户加入dialout用户组才能访问串口设备,无权限时会直接抛端口打开失败错误
  • 修正字节解析逻辑:原示例用ser_bytes[0:len(ser_bytes)-2]硬编码切掉末尾2个字节适配\r\n换行,不同设备输出的换行符可能是单字节\n,硬编码切片会误切有效数字,替换为decoded_bytes = float(ser_bytes.strip().decode("utf-8"))兼容性更好。

实用参考

  • MCC官方Python例程库包含USB-204全功能的现成示例,是最准确的实现参考
  • Python标准库csv模块的官方文档有实时写入行数据的标准写法,可按需扩展多通道采集、异常值过滤等功能
  • 调试顺序建议:先在官方配置工具/串口调试助手确认硬件输出正常,再开发Python代码,不要先写代码再排查硬件问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:33:16