需要注意的一件事,像这样的代码:
for i in serial.tools.list_ports.comports():
print(i)
返回以下内容:
COM7 - Standard Serial over Bluetooth link (COM7) COM1 - Communications Port (COM1) COM8 - Standard Serial over Bluetooth link (COM8) COM4 - USB-SERIAL CH340 (COM4)
如果您希望按顺序列出端口,并且只列出您可用的端口,请尝试:(感谢 tfeldmann)
def serial_ports():
""" Lists serial port names
:raises EnvironmentError:
On unsupported or unknown platforms
:returns:
A list of the serial ports available on the system
"""
if sys.platform.startswith('win'):
ports = ['COM%s' % (i + 1) for i in range(256)]
elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
# this excludes your current terminal "/dev/tty"
ports = glob.glob('/dev/tty[A-Za-z]*')
elif sys.platform.startswith('darwin'):
ports = glob.glob('/dev/tty.*')
else:
raise EnvironmentError('Unsupported platform')
result = []
for port in ports:
try:
s = serial.Serial(port)
s.close()
result.append(port)
except (OSError, serial.SerialException):
pass
return result
这将返回以下内容:
['COM1', 'COM4', 'COM8']
因此,与第一个示例不同,结果是 ['COM7', 'COM1', 'COM8', 'COM4'],这次我按顺序获取了所有的 COM 端口,并且只有可用的端口。如果您按顺序需要它们并进行测试以查看它们是否可用,则非常方便。