0

我正在尝试创建的功能找到负责 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()。有没有办法以这种方式做到这一点,还是回到绘图板上?

4

1 回答 1

0

而不是存储端口:

j.append(port)

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

j.append(ser)

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

稍后您可以使用以下命令将它们全部关闭:

for ser in OpenPorts:
       ser.close()
于 2013-10-24T20:53:54.993 回答