首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在pyserial中创建serial.Serial()的多个实例?

是否可以在pyserial中创建serial.Serial()的多个实例?
EN

Stack Overflow用户
提问于 2013-10-03 18:51:21
回答 1查看 1.2K关注 0票数 0

我试图创建的函数找到了一个负责AT命令的调制解调器的端口。我试图使serial.Serial()的不同实例成为不同循环的本地实例。我查看了我可以找到的文档中的信息,但我发现的文档中没有一个以任何方式提到过这一点(如果它在某个地方,而我错过了它,请尽管让我看起来很傻,并将其链接起来)。例如:

代码语言:javascript
复制
    OpenPorts = []
    j=[]
    for modem in PortList:          #This opens every Modem
            for port in modem:
                    try:
                            j=[]
                            print port
                            ser = serial.Serial(port, 9600, timeout=1)
                            ser.close()
                            ser.open()
                            j.append(port)
                    except serial.SerialException:
                            continue
            OpenPorts.append(j) 
            print OpenPorts
    del j
    del ser

这是可行的。但当我尝试这个:

代码语言:javascript
复制
 for port in OpenPorts:
            if port is not '':
                    ser = serial.Serial(port, 9600, timeout=1) 
                    ser.write('ati')
 del ser

我得到'TypeError:只能连接列表(而不是"int")到列表‘

我需要将它们保持在循环的本地,因为我正在从一组正在使用的端口列表中打开多个端口(从另一个文件中收集)。我必须使用多个循环,因为我需要在time.sleep()返回任何内容之前使用ser.read()。有办法这样做吗,还是回到了画板上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-24 20:53:54

而不是存储端口:

代码语言:javascript
复制
j.append(port)

为什么不追加ser实例,以便以后可以像这样使用:

j.append(ser)

代码语言:javascript
复制
for ser in OpenPorts:
       ser.write('ati')

以后你可以用以下方法关闭它们:

代码语言:javascript
复制
for ser in OpenPorts:
       ser.close()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19166944

复制
相关文章

相似问题

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