python - 尝试使用 Arduino 时出现 Python TypeError
问题描述
我正在尝试通过串行链接(com3)从 uno 获取数据并从运行 anaconda、spyder(3.3.3)和 pyserial 3.7 的 iti 创建子字符串
import serial
ser = serial.Serial("COM3",9600)
i = 1
while i < 6:
line=ser.readline()
print (line)
x=x+1
print(i)
index1=line.index(",")
index2=line.index(".")
print(line[0:index1])
print(line[index1+1,index2])
ser.close()
错误:
第 21 行,在 index1=line.index(",")
TypeError:参数应该是整数或类似字节的对象,而不是“str”
解决方案
您有一个例外,因为您尝试查找 unicode 字符“。”的索引。以字节为单位。
bytes
是......只是字节(00-ff 范围)。前任。b"abc" 在 Python3 中。
str
是一串 unicode 字符(a..z、ż、α 等)。前任。Python3 中的“abc”。
您可以使用(如果您期望文本):
line=ser.readline().decode() # bytes -> unicode str
index2=line.index(".")
或者您可以处理字节(在“.”之前查看b):
line=ser.readline()
index2=line.index(b".")
PS你可以看到你输入的内容:print(repr(line))
。
推荐阅读
- autohotkey - OneNote 在 AHK 之前拦截笔光标?
- kubernetes - 适用于组和用户的 Kubernetes ABAC 策略?
- r - 提取范围内变量的最大值
- c - 有没有办法保证段错误?
- linux - 将 Git 与 GitHub 一起使用:`remote: Permission to username\project.git denied to myname.`
- hiveql - GROUP BY 中的 MAX() 用法与非数字列
- c# - 如何使 WPF 应用程序或窗口中的音频静音?
- java - 将相机 Intent 传递给 Android 输入流
- mysql - “from flaskext.mysql import MySQL”导致服务器显示 502 bad gateway
- java - map.size() 是否始终与 map.entrySet().size() 相同