我正在寻找一个简单的方法列出一台电脑上所有可用的com端口
我找到了这个方法,但它是Windows特有的:Listing serial (COM) ports on Windows?
我在Windows 7上使用Python 3和pySerial
我在pySerial API(http://pyserial.sourceforge.net/pyserial_api.html)中找到了一个列出com端口的函数serial.tools.list_ports.comports()
(正是我想要的)。
import serial.tools.list_ports
print(list(serial.tools.list_ports.comports()))
但似乎没用。当我的USB-to-COM网关连接到PC时(我在设备管理器中看到COM5),这个COM端口不包括在由list_ports.comports()
返回的列表中。相反,我只得到似乎连接到调制解调器的COM4(我在设备管理器的COM&LPT部分看不到它)!
你知道为什么不起作用吗?你有没有另一个不特定于系统的解决方案?
这是我使用的代码。
使用Python2和Python3在Windows 8.1 x64、Windows 10 x64、Mac OS X 10.9.X/10.10.X/10.11.X和Ubuntu14.04/14.10/15.04/15.10上成功测试。
您可以使用:
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
Thomas完美答案的一个可能改进是让Linux和OSX也尝试打开端口,并只返回那些可以打开的端口。这是因为Linux至少在/dev/中将大量端口列为文件,而这些文件与任何东西都没有连接。如果您在终端中运行,/dev/tty是您在其中工作的终端,打开和关闭它可能会使您的命令行出错,因此glob被设计为不这样做。代码:
托马斯代码的修改只在Ubuntu 14.04上测试过。
相关问题 更多 >
编程相关推荐