首页 > 解决方案 > 尝试使用 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”

标签: pythonarduino

解决方案


您有一个例外,因为您尝试查找 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))


推荐阅读