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

Python与Arduino串口通信报错:ABCMeta参数需为映射而非元组

解决serial.Serial初始化时的TypeError问题

错误原因

你代码里的**('timeout',)写法完全错误:**运算符要求后面必须跟映射类型(比如Python字典),用来解包关键字参数,但你传的是一个元组('timeout',),不符合语法要求,所以触发TypeError。

正确写法

要设置timeout参数,直接用关键字参数传递即可,或者用字典解包(适用于参数较多的场景):

方式1:直接传关键字参数(推荐)

# timeout值根据需求设置,比如1秒,设为None表示永不超时
arduino = serial.Serial(com, 115200, 0, timeout=1)

方式2:字典解包(参数存于字典时使用)

serial_kwargs = {'timeout': 1}
arduino = serial.Serial(com, 115200, 0, **serial_kwargs)

额外优化建议

第三个参数0对应的是bytesize参数,直接用serial模块的常量可读性更高,比如:

import serial

# 替换成你的实际串口名,比如COM3(Windows)或/dev/ttyUSB0(Linux)
com_port = 'COM3'
arduino = serial.Serial(com_port, 115200, serial.EIGHTBITS, timeout=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:45:32