“序列”对象不可下标

时间:2019-12-06 00:19:29

标签: python

在这里,我将类重构为组合方式。该类是侦听缓冲区。但是,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)

1 个答案:

答案 0 :(得分:0)

“'Serial'对象不可下标”表示您不能对Serial对象使用方括号语法(someObject[n])。如果尝试运行以下代码,则应重现该错误:

serial.Serial("COM12", 9600)[1]

问题是if device[1] == 'Access is denied.':行之一。您不能在此处将方括号语法与device变量一起使用,因为它是Serial的一个实例。