Arduino与Python串口通信:如何拆分存储接收的多组数值
解决方案
很简单,在你现有的代码基础上,只需要几步就能把分割后的数值分配到目标变量里:
- 分割处理后的字符串:用
split()方法把空格分隔的字符串拆成列表,它会自动处理任意数量的空格分隔符。 - 直接赋值给变量:从分割后的列表里取出对应位置的元素,分别赋值给
a、b、c。 - 格式化打印:用f-string输出你想要的清晰格式。
完整的代码片段如下:
# 你原有的串口读取代码 data = arduino.readline() str_data = data[:-2].decode() # 把变量名从`str`改成`str_data`,避免覆盖Python内置函数 # 新增的分割与赋值逻辑 parts = str_data.split() # 加入长度检查,防止数据格式异常导致报错 if len(parts) >= 3: a, b, c = parts[0], parts[1], parts[2] # 按要求格式打印结果 print(f"a={a}, b={b}, c={c}") else: print("串口数据格式不正确,缺少足够的数值组")
补充说明:
- 我把变量名
str改成了str_data,因为str是Python的内置类型,用它当变量名会覆盖内置函数,容易引发潜在问题。 - 加入的长度检查能避免串口传输时出现数据截断、格式错误导致的索引越界异常,让代码更健壮。
- 如果你的Arduino发送的六组数值是成对重复的(比如前三个和后三个完全一致),也可以选择取后三个元素赋值:
a, b, c = parts[3], parts[4], parts[5],根据你的实际需求调整即可。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

