Функция, которую я пытаюсь создать, находит порт модема, отвечающего за команды AT. Я пытаюсь сделать разные экземпляры serial.Serial() локальными для разных циклов. Я просмотрел документацию, которую мог найти для информации, но ни один из тех, которые я нашел, никоим образом не упоминал (если это где-то, и я пропустил это, пожалуйста, не стесняйтесь, чтобы я выглядел глупо и связывал его). Например:Возможно ли сделать несколько экземпляров serial.Serial() в pyserial?
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
Я получаю «Ошибка типа: может сцепить только список (не„ИНТ“) в список»
мне нужно, чтобы держать их локальными по отношению к петлям, потому что я открываю несколько портов из набора списка используемых портов (собранных из другого файла). Я должен использовать несколько циклов, потому что мне нужно использовать time.sleep(), прежде чем ser.read() вернет что-нибудь. Есть ли способ сделать это таким образом или вернуться к чертежной доске?
OpenPorts - это список списков ... Правильно ли? Возможно, вы действительно хотите сделать «OpenPorts.extend (j)» вместо «OpenPorts.append (j)»? serial.Serial не работает со списком в качестве первого аргумента AFAIK. – mguijarr
У меня проблемы. Мне нужно, чтобы это список списков по другой причине, но я знаю, как я могу это исправить. Если вы опубликуете это в качестве ответа, я приму это. Спасибо. – RageCage