Arduino通过USB串口向树莓派传数据,如何仅打印数字内容?
问题原因
你的输出存在多余内容有两个核心原因:
ser.readline()返回的是字节串(bytes)类型,所以打印时会自带b''前缀;同时Arduino的Serial.println()方法会自动在输出内容末尾追加\r\n换行回车符,这部分也会被串口读取到。- 你把串口初始化代码
ser = serial.Serial('/dev/ttyACM0', 9600)放在了while死循环内部,会重复打开串口,后续大概率会触发串口占用报错,需要优先调整。
调整后的Python代码
import serial # 串口初始化仅执行一次,不要放在循环内 ser = serial.Serial('/dev/ttyACM0', 9600) while True: # 按顺序执行:读字节串→转UTF-8字符串→去除首尾换行/回车/空白符 valore = ser.readline().decode('utf-8').strip() # 如果后续需要对数值做运算,可以再加一步转整数:valore = int(valore) print(valore)
操作说明
decode('utf-8'):将字节串转为普通字符串,消除b''前缀strip():自动去除字符串首尾的所有空白类字符,包括多余的\r和\n- 如果需要直接使用数值做逻辑判断、计算,额外调用
int()方法把字符串转为整数即可。
内容的提问来源于stack exchange,提问作者user17319247
相关产品推荐
相关产品推荐

