Функцията, която се опитвам да създам, намира порта на модема, отговарящ за 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“
Трябва да ги поддържам локални за циклите, защото отварям множество портове от зададен списък с използвани портове (събрани от друг файл). Трябва да използвам множество цикли, защото трябва да използвам time.sleep(), преди ser.read() да върне нещо. Има ли някакъв начин да го направя по този начин, или се връща към чертожната дъска?
OpenPorts.extend(j)
вместоOpenPorts.append(j)
? serial.Serial не работи със списък като първи аргумент AFAIK. - person mguijarr   schedule 04.10.2013