在这里,我把课堂结构改为作文方式。这个类是听缓冲区的。但是,方法recv喜欢不知道什么参数设备它。我不知道准确的错误意味着什么。
'Serial' object is not subscriptableclass Device():
def open(self, port, baudrate):
try:
return serial.Serial(port, baudrate)
except SerialException as e:
error = re.findall(r"'(.*?)'", str(e))
return error
def __state(self, device):
if device is not False:
if device[1] == 'Access is denied.':
return True
elif device[1] == 'Port is already open.':
return True
else:
return False
else:
return True
def recv(self, device):
while True:
if self.__state(device):
buffer = device.readline()
print(buffer)
time.sleep(1)
else:
print(device[0] + ' ' + device[1])
time.sleep(1)
device = Device()
serial = device.open('COM12', 9600)
device.recv(serial)发布于 2019-12-06 00:33:39
“‘序列’对象不可订阅”意味着不能对Serial使用方括号语法(someObject[n])。如果您尝试运行以下代码,它应该会再现错误:
serial.Serial("COM12", 9600)[1]问题是一个行if device[1] == 'Access is denied.':。这里的设备变量不能使用方括号语法,因为它是Serial的实例。
https://stackoverflow.com/questions/59205111
复制相似问题