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

时间:2013-10-03 18:51:22

标签: python serial-port pyserial

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

    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

有效。但是当我尝试这个时:

 for port in OpenPorts:
            if port is not '':
                    ser = serial.Serial(port, 9600, timeout=1) 
                    ser.write('ati')
 del ser

我得到'TypeError:只能将列表(不是“int”)连接到列表'

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

1 个答案:

答案 0 :(得分:0)

而不是存储端口:

j.append(port)

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

j.append(ser

for ser in OpenPorts:
       ser.write('ati')

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

for ser in OpenPorts:
       ser.close()