Python串口通信实战:pyserial安装、端口检测与数据收发详解

键盘旁的猫
键盘旁的猫
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍如何利用Python的pyserial库实现串口通信。内容涵盖库的安装方法、可用端口的检测与获取、十六进制指令的格式转换技巧,以及完整的串口读写类封装示例。通过具体代码演示,帮助开发者快速掌握在Windows和Ubuntu系统下进行串口数据交互的核心步骤。

pyserial库安装与环境准备

首先,需要确保环境中已安装pyserial库。若未安装,可通过pip命令进行安装,具体指令为:。


pip install pyserial

串口端口检测与获取

安装完成后,下一步是检测系统中可用的串口设备。可以使用serial.tools.list_ports模块列出所有连接的设备。代码逻辑首先获取端口列表,若列表为空则提示未找到端口;否则提取第一个端口的名称并尝试以9600波特率、60秒超时时间打开串口,最后打印出可用的端口名称。


# coding:utf-8

import serial.tools.list_ports

plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:
  print("没有发现端口!")
else:
  plist_0 = list(plist[0])
  serialName = plist_0[0]
  serialFd = serial.Serial(serialName, 9600, timeout=60)
  print("可用端口名>>>", serialFd.name)

十六进制数据格式转换

在发送数据时,若需传输十六进制指令,需将其转换为字节列表格式。例如,对于十六进制字符串010591F50000F104,应将其转换为对应的字节数组:。


# 所发十六进制字符串010591F50000F104
cmd = [0x01, 0x05, 0x91, 0xF5, 0x00, 0x00, 0xF1, 0x04]

串口通信类封装与实现

接下来实现具体的串口通信逻辑。在Windows系统中,端口通常表示为COM*(如COM4),而在Ubuntu系统中则为/dev/ttyS0等格式。以下代码封装了一个Ser类,用于管理串口连接。在初始化方法中,指定端口号、波特率9600、数据位8、偶校验(parity='E')、停止位1以及2秒超时时间。send_cmd方法负责发送指令并读取所有响应数据,随后通过convert_hex函数将返回的字节数据转换为十六进制字符串列表。


Windows下端口为COM*, Ubuntu下为/dev/ttyS0

import serial

class Ser(object):
  def __init__(self):
    # 打开端口
    self.port = serial.Serial(port='COM4', baudrate=9600, bytesize=8, parity='E', stopbits=1, timeout=2)

  # 发送指令的完整流程
  def send_cmd(self, cmd):
    self.port.write(cmd)
    response = self.port.readall()
    response = self.convert_hex(response)
    return response

  # 转成16进制的函数
  def convert_hex(self, string):
    res = []
    result = []
    for item in string:
      res.append(item)
    for i in res:
      result.append(hex(i))
    return result

上述内容完整展示了Python使用pyserial进行串口通信的关键步骤,包括环境配置、端口识别、数据格式化及通信封装。希望该实例能为相关开发工作提供参考,欢迎持续关注获取更多技术支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。