Что такое кроссплатформенный метод перечисления последовательных портов в Python (включая виртуальные порты)?
Note: Я использую 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
Я нашел несколько подходящих вопросов:
MacPython: programmatically finding all serial ports MacOS: what's the difference between /dev/tty.* and /dev/cu.*? How to find all serial devices (ttyS, ttyUSB, ..) on Linux without opening them?