如何列出所有的com-ports?

Posted

技术标签:

【中文标题】如何列出所有的com-ports?【英文标题】:How to list all com-ports? 【发布时间】:2020-08-26 01:18:11 【问题描述】:

我使用pip install pyserial 安装了pyserial,现在我尝试运行下面的代码来列出我桌面上的所有comports。如果这很重要,我正在使用 PyCharm。

import serial.tools.list_ports

def serial_ports():
    print(list(serial.tools.list_ports.comports()))

if __name__ == '__main__':
    serial_ports()

现在它只打印出[] 而没有别的。我什至不确定我的电脑是否有 comports,因为当我检查my device manager 时,我没有看到任何名为“端口(COM 和 LPT)”的东西。任何帮助表示赞赏。

【问题讨论】:

我什至不确定我的电脑是否有 comports 如果你的电脑没有任何 com 端口,你希望代码做什么? 您希望在列表中显示什么?我不确定当前可用的任何计算机是否具有内置 COM 或 LPT 端口,您很可能会看到类似 USB 转串口适配器之类的东西。 你的电脑很可能没有。您可能需要查看 USB 转 RS232 电缆。我推荐一个带有 FTDI 芯片组的产品(比如这个one——虽然我没有使用过这个模型)。避免使用 Prolific 芯片组的产品……解决许多问题(例如丢失字符)。我想一旦你有一些可以像 COM 端口一样工作的东西,那么你的代码可能真的可以工作。 :-) 我正在尝试通过 USB 端口连接到 Arduino,我认为我需要做的第一步是弄清楚我的计算机上的哪个端口连接到了 Arduino。 【参考方案1】:

试试这个:更新

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())

【讨论】:

我现在得到带有更新代码的空括号。看起来像 -> [] 嗯。你能先在你的 cmd 中运行它吗:python -m serial.tools.list_ports。它必须列出端口 它说没有找到端口 你在用Anaconda吗? 您的Pycharm project 是否与Anaconda environment 相关联?

以上是关于如何列出所有的com-ports?的主要内容,如果未能解决你的问题,请参考以下文章

刚刚读取刚打开的SerialPort时,只读取一个字节

如何列出目录下的所有文件

如何在prolog中列出所有最小值

如何在 Django 中列出所有与表单相关的错误?

如何列出一个 npm 模块的所有版本?

如何列出目录的所有文件?