Python TypeError при попытке работы с Arduino - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь получить данные из uno по последовательному каналу связи (com3) и создать подстроки из него, на котором запущены anaconda, spyder (3.3.3) и pyserial 3.7

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'

1 Ответ

0 голосов
/ 26 февраля 2019

У вас есть исключение, потому что вы пытаетесь найти индекс символа Юникод "."в байтах.

bytes - это всего лишь байты (диапазон от 00 до ff).Ex.b «abc» в Python3.

str - строка символов Юникода (a..z, ż, α и т. д.).Ex.«abc» в Python3.

Вы можете использовать (если вы ожидаете текст):

line=ser.readline().decode()  # bytes -> unicode str
index2=line.index(".")

Или вы можете работать с байтами (смотрите b раньше ")."):

line=ser.readline()
index2=line.index(b".")

PS Вы можете видеть, что вы получаете, набрав: print(repr(line)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...