У вас есть исключение, потому что вы пытаетесь найти индекс символа Юникод "."в байтах.
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))
.