我想做一个从串口获取数据的程序,其开始和停止位将是 * 和#。收到的数据将在 * 1234567#此表单中。但它说我的'type'对象不是可订阅的。我是Python的新手,我不知道下一步该做什么,有人可以帮我解决这个问题吗?
import serial
ser = serial.Serial(
port='COM5',\
baudrate=9600,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=0)
MAX_BUF_SIZE = 16
bits = 0
v = memoryview
print("connected to: " + ser.portstr)
while(1):
for memoryview in ser.read():
if v[0] == 42:
if v[-1] == 35:
print(v[1:-1].tobytes())
else:
memoryview = 0
ser.close()
connected to: COM5
Traceback (most recent call last):
File "C:\Python33\Saves\Receive using buff.py", line 24, in <module>
if v[0] == 42:
TypeError: 'type' object is not subscriptable
>>>
答案 0 :(得分:1)
你正在做的事情过于复杂。我根本不知道你为什么要使用memoryview
。就这样做:
import serial
ser = serial.Serial(
port='COM5',
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=0)
print("connected to: " + ser.portstr)
for data in ser.read():
if data[0] == 42 and data[-1] == 35:
print(data[1:-1].decode())
ser.close()
这不太可能实际工作,但它是您的代码的简化。 如何实际处理它取决于数据的详细程度。