注意:我使用 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 呢?
无论平台如何,我应该如何枚举串行端口(也是虚拟的)?
编辑
我发现了一些相关的问题: