我正在寻找一种简单的方法来列出PC上所有可用的com端口。
我已经找到了这个方法,但它是特定于Windows的:Listing serial (COM) ports on Windows?
我在Windows7 PC上使用Python3和pySerial。
我在pySerial应用程序接口(http://pyserial.sourceforge.net/pyserial_api.html)中发现了一个函数serial.tools.list_ports.comports(),它列出了com端口(这正是我想要的)。
import serial.tools.list_ports
print(list(serial.tools.list_ports.comports()))但它似乎不起作用。当我的USB网关连接到PC时(我在设备管理器中看到COM5 ),此COM端口不包括在list_ports.comports()返回的列表中。相反,我只得到了COM4,它似乎连接到了调制解调器(我在设备管理器的COM&LPT部分没有看到它)!
你知道为什么它不工作吗?您是否有其他非系统特定的解决方案?
发布于 2013-01-09 05:38:10
这是我使用的代码。
在Windows8.1 x64,Windows10 x64,MacOSX10.9.x/ 10.10.x / 10.11.x和Ubuntu14.04/ 14.10 / 15.04 / 15.10上成功测试了Python2和Python3。
import sys
import glob
import serial
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
if __name__ == '__main__':
print(serial_ports())发布于 2018-10-15 10:58:39
在pyserial文档https://pyserial.readthedocs.io/en/latest/tools.html#module-serial.tools.list_ports中基本上提到了这一点。
import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
for port, desc, hwid in sorted(ports):
print("{}: {} [{}]".format(port, desc, hwid))结果:
COM1:通信端口(COM1) ACPI\PNP0501\1
COM7: MediaTek USB端口(COM7) USB VID:PID=0E8D:0003 SER=6位置=1-2.1
发布于 2015-11-12 11:44:17
您可以使用:
python -c "import serial.tools.list_ports;print serial.tools.list_ports.comports()"
按已知端口过滤:python -c "import serial.tools.list_ports;print [port for port in serial.tools.list_ports.comports() if port[2] != 'n/a']"
点击此处查看更多信息:https://pyserial.readthedocs.org/en/latest/tools.html#module-serial.tools.list_ports
https://stackoverflow.com/questions/12090503
复制相似问题