首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“‘Serial”对象不可订阅

“‘Serial”对象不可订阅
EN

Stack Overflow用户
提问于 2019-12-06 00:19:29
回答 1查看 275关注 0票数 0

在这里,我把课堂结构改为作文方式。这个类是听缓冲区的。但是,方法recv喜欢不知道什么参数设备它。我不知道准确的错误意味着什么。

代码语言:javascript
复制
'Serial' object is not subscriptable
代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2019-12-06 00:33:39

“‘序列’对象不可订阅”意味着不能对Serial使用方括号语法(someObject[n])。如果您尝试运行以下代码,它应该会再现错误:

代码语言:javascript
复制
serial.Serial("COM12", 9600)[1]

问题是一个行if device[1] == 'Access is denied.':。这里的设备变量不能使用方括号语法,因为它是Serial的实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59205111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档