Два ответа
1) Поскольку это зависит от доступного оборудования, вполне возможно, что тестовый код работал в среде, на которой он был написан, но не работает в вашей среде - может быть довольноскорее всего, если вы работаете в Windows, и это было написано в Linux.Код использует порт 0 - не знаю, как это сопоставляется с COM1 и т. Д.
2) В Windows COM-порты имели имена DOS, такие как COM1, COM2 - т.е. строка, а не int (они не являютсяне нравится номера портов TCP / IP).Совсем недавно в Windows появился формат \. \ COMnotanumber, который позволяет использовать более общее имя, я видел, как они используются конвертером USB в последовательный порт.После быстрого просмотра исходного кода pyserial SerialBase в serialutil.py, это немного странный IMO, потому что AFAICT self.name устанавливается только тогда, когда вы используете явную настройку порта, вызывая self.port (portname).Возможно, вы захотите попробовать инициализировать экземпляр последовательного порта с помощью serport = Serial (0), а затем явно вызвать serport.port ('COM1') (или любое другое имя вашего порта вместо COM1).
Просто исправил код,работает нормально ...:)
import serial
def scan():
available = []
for i in range(256):
try:
s = serial.Serial('COM'+str(i))
available.append( (s.portstr))
s.close() # explicit close 'cause of delayed GC in java
except serial.SerialException:
pass
for s in available:
print "%s" % (s)
if __name__=='__main__':
print "Found ports:"
scan()