迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

使用 Python 列出串口

作者:迹忆客 最近更新:2023/06/19 浏览次数:

在本文中,我们将讨论使用串口或 com 端口的通信。 我们将深入探索 Python 包,以帮助我们获得系统的可用通信端口。

稍后,我们将回顾一些使用 Python 搜索和获取有关可用串行端口的详细信息的技术。


COM口简介

COM 端口是一种 I/O 接口,可以将串行设备连接到计算机。 它是通信端口的缩写形式。

COM 端口有时也称为串行端口。 COM口在新的电脑和设备上已经不常用了,但是很多旧的串口设备还在使用。

因此,我们有时可能需要进行串口通信,将这些端口列出来进行几个串口操作。


在 Python 中获取可用串口列表

有时在编程时,我们需要获取有关系统中可用通信端口的信息。 我们将讨论如何使用 Python 来做到这一点。

Python 提供了 pySerial 模块,它提供了对串行端口和相关信息的访问。 我们首先需要将包pySerial安装到我们的项目中,然后我们就可以轻松地使用它的功能了。

要安装包,我们必须在 Python 命令终端中键入 pip install pyserial 并按 Enter。 该包将可供使用。

现在,让我们看一下列出串行端口的以下代码:

import serial.tools.list_ports
ports = []
for port in serial.tools.list_ports.comports():
    ports.append(port.name)
print(ports)

输出:

['COM1']

让我们讨论一下我们在代码中做了什么。 我们必须编写 import serial 才能使用已安装的包。

pySerial 包有一个 comports() 方法,它返回可用 COM 端口的列表。 此列表中的每个对象都是 ListPortInfo 类型。

我们将在本文后面讨论这个 ListPortInfo 对象包含什么。

comports() 函数位于模块 list_ports 中,该模块位于工具中。 所以我们通过编写 import serial.tools.list_ports 来导入整个模块。

然后我们只需在 comports() 函数返回的列表上运行一个 for 循环,并将端口附加到我们的列表中。

上面的代码可以通过使用 Python 列表理解来编写得更简单。 两种代码的输出将相同。 就是这样。

import serial.tools.list_ports

print([port.device for port in serial.tools.list_ports.comports()])

获取串行端口列表及其详细信息

正如我们所讨论的,comports() 函数返回端口列表,列表中的每个对象都是 ListPortInfo 类型。 此对象包含有关串行端口的信息,并提供索引访问以检索设备(全名/路径)、描述和串行端口的 hwid。

索引 0 将为我们提供设备的值,描述位于索引 1,索引 2 将共享端口的 hwid。

以下是 ListPortInfo 对象可以为我们提供的有关 COM 端口的详细信息:

对象 描述
device 完整的设备名称/路径。 当索引访问时,这将作为第一个元素返回。
name 短设备名称。
description 人类可读的描述。 当索引访问时,这将作为第二个元素返回。
hwid 硬件 ID。 当索引访问时,这将作为第三个元素返回。
vid USB 供应商 ID。
pid USB 产品 ID。
serial_number 字符串形式的 USB 序列号。
location USB 设备位置字符串。
manufacturer USB 制造商字符串,由设备报告。
product USB 产品字符串,由设备报告。
interface 特定于接口的描述。

现在,让我们编写一个代码来获取所有可用 com 端口的列表以及它们的名称、描述、制造商和 hwid。

import serial.tools.list_ports

port_data = []
for port in serial.tools.list_ports.comports():
    info = dict({"Name": port.name, "Description": port.description, "Manufacturer": port.manufacturer,
                 "Hwid": port.hwid})
    port_data.append(info)
print (port_data)

输出:

[{'Name': 'COM1', 'Description': 'Communications Port (COM1)', 'Manufacturer': '(Standard port types)',
  'Hwid': 'ROOT\\PORTS\\0000'}]

按名称搜索串行端口

当我们的计算机中有多个端口时,此功能很有用。 如果我们需要任何特定的端口,我们可以根据我们的选择通过名称或描述来搜索它。

让我们在 Python 中创建一个函数,它将返回我们给定名称的端口。

import serial.tools.list_ports

def get_port_by_name(port_name):
    for port in serial.tools.list_ports.comports():
        if port.name == port_name:
            return port
print(get_port_by_name("COM1").description)

输出:

Communications Port (COM1)

代码很容易掌握。 在我们的函数中,for 循环在 comports() 函数返回的端口列表上运行。

我们在循环中验证每个端口的名称,看它是否与用户输入匹配。 如果是,我们返回那个端口。

你可以为描述构造一个类似的函数,它会通过检查描述来返回端口。

上一篇:在 Python 中解析 ISO 8601 日期

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中解析 ISO 8601 日期

发布时间:2023/06/18 浏览次数:121 分类:Python

我们将讨论典型的 ISO 8601 日期的结构,并向您展示如何将典型的 DateTime 对象解析为可以在所有地方使用的标准化 DateTime。ISO 8601 日期的结构

在 Python 中安装 Egg 文件

发布时间:2023/06/18 浏览次数:92 分类:Python

在本文中,我们将讨论如何在 Python 中安装 egg 文件,以及可用于实现此操作的工具。使用 setuptools 在 Python 中安装 egg 文件

使用 Python 获取 Redis 数据库中的所有键

发布时间:2023/06/18 浏览次数:127 分类:Python

本文将讨论如何使用Python获取 Redis 数据库中的所有键。使用 keys() 获取 Redis 数据库中的所有键 要使用 redis,我们需要安装它; 您可以查看 Redis 下载页面以了解操作方法。

修复 Python 中的 NLTK 词干异常

发布时间:2023/06/18 浏览次数:182 分类:Python

在 Python 中,我们可以借助 Python 的 NLTK 库提供的各种模块来完成此操作,但有时,您可能无法获得预期的结果。 本文将讨论为什么会出现这种差异,以及如何解决这些差异以获得我们想要的词

使用 Jython 在 Java 中运行 Python

发布时间:2023/06/18 浏览次数:118 分类:Python

本文将彻底解释使用 Jython 库在 Java 程序中运行 Python 的步骤。 这将是一个包含大量图像的详细分步过程,因此您不必担心“他是怎么做到的”。

Python 图像压缩

发布时间:2023/06/18 浏览次数:157 分类:Python

本篇文章将介绍使用 Python 中的 PIL 库压缩图像。在使用 PIL 库之前,请使用 pip 或 python 安装它。pip install Pillow

在 Python 中调整图像大小同时保持其纵横比

发布时间:2023/06/18 浏览次数:187 分类:Python

这篇 Python 文章的目的是解释我们如何在 Python 中调整图像大小同时保持其纵横比。 在 Python 中调整图像大小的方法还将通过适当的示例程序描述其用法。在 Python 中调整图像大小同时保持其纵横

Python类相等检查

发布时间:2023/06/18 浏览次数:131 分类:Python

本文讨论如何在 Python 中检查类相等性。 为此,本文讨论了如何在 Python 类中实现 eq() 方法。

Python 类工厂

发布时间:2023/06/18 浏览次数:83 分类:Python

本篇文章介绍了创建类工厂的不同方法。如何在 Python 中创建类工厂 有两种设计类工厂的方法; 一个在编码时创建一个类,而另一个在运行时创建一个类。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便