Qual é o método de plataforma cruzada de enumeração de portas seriais no Python (incluindo portas virtuais)?
Nota: Estou usando o Python 2.7 e pySerial para comunicação serial.
Eu encontrei este artigo que lista duas maneiras:http://www.zaber.com/wiki/Software/Python#Displaying_a_list_of_available_serial_ports
Esse método funciona no Windows e no Linux, mas às vezes não tem portas virtuais no 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)
E este que só funciona no Linux, mas inclui portas virtuais:
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
Eu suponho que eu poderia fazer a detecção de plataforma para usar o segundo método (aquele que inclui portas virtuais) quando rodando no Linux, e o primeiro método quando rodando o Windows, mas e o Mac?
Como devo enumerar as portas seriais (virtuais também) independentemente da plataforma?
Editar
Eu encontrei algumas questões pertinentes:
MacPython: encontrar programaticamente todas as portas seriaisMacOS: qual a diferença entre /dev/tty.* e /dev/cu.*?Como encontrar todos os dispositivos seriais (ttyS, ttyUSB, ..) no Linux sem abri-los?