在这里,我将类重构为组合方式。该类是侦听缓冲区。但是,recv之类的方法不知道 device 是什么参数。我不完全知道错误的意思。
'Serial' object is not subscriptable
class 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)
答案 0 :(得分:0)
“'Serial'对象不可下标”表示您不能对Serial对象使用方括号语法(someObject[n]
)。如果尝试运行以下代码,则应重现该错误:
serial.Serial("COM12", 9600)[1]
问题是if device[1] == 'Access is denied.':
行之一。您不能在此处将方括号语法与device变量一起使用,因为它是Serial的一个实例。