【发布时间】:2013-10-25 04:53:54
【问题描述】:
我正在尝试创建的函数查找负责 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: can only concatenate list (not "int") to list'
我需要将它们保留在循环的本地,因为我正在从一组正在使用的端口列表中打开多个端口(从另一个文件收集)。我必须使用多个循环,因为我需要在 ser.read() 返回任何内容之前使用 time.sleep()。有没有办法以这种方式进行,还是回到绘图板上?
【问题讨论】:
-
OpenPorts 是一个列表的列表...对吗?也许你真正想做的是
OpenPorts.extend(j)而不是OpenPorts.append(j)? serial.Serial 不适用于列表作为第一个参数 AFAIK。 -
啊,我的问题。出于另一个原因,我需要它成为列表列表,但我知道如何修复它。如果您将其发布为答案,我会接受。谢谢。
标签: python serial-port pyserial