我正在尝试创建的函数找到负责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()返回任何内容。有没有办法这样做,还是回到绘图板?
答案 0 :(得分:0)
而不是存储端口:
j.append(port)
为什么不追加ser
实例,以便以后可以这样使用:
j.append(ser
)
for ser in OpenPorts:
ser.write('ati')
以后你可以用以下方式关闭它们:
for ser in OpenPorts:
ser.close()