Примечание. Я использую Python 2.7 и pySerial для последовательной связи.
Я нашел эту статью, которая перечисляет два пути: http://www.zaber.com/wiki/Software/Python#Displaying_a_list_of_available_serial_ports
Этот метод работает на Windows и Linux, но иногда пропускает виртуальные порты в Linux:
import serial
def scan():
# scan for available ports. return a list of tuples (num, name)
available = []
for i in range(256):
try:
s = serial.Serial(i)
available.append( (i, s.portstr))
s.close()
except serial.SerialException:
pass
return available
print "Found ports:"
for n,s in scan(): print "(%d) %s" % (n,s)
И этот, который работает только в Linux, но включает в себя виртуальные порты:
import serial, glob
def scan():
# scan for available ports. return a list of device names.
return glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*')
print "Found ports:"
for name in scan(): print name
Я полагаю, что я мог бы использовать определение платформы для использования второго метода (тот, который включает в себя виртуальные порты) при работе в Linux, и первый метод при работе с Windows, но как насчет Mac?
Как я должен перечислять последовательные порты (виртуальные тоже) независимо от платформы?
Edit
Я нашел несколько актуальных вопросов: