2、Python串口库安装与枚举:pyserial库安装、系统串口枚举、虚拟串口(VCP)驱动、常见权限问题解决

好,咱们正式开始动手。这一章的目标很明确——让你的电脑能“看见”串口,并且能用 Python 跟它说话。

别小看这一步。我见过太多学员卡在“明明插了设备,代码就是打不开串口”这种问题上。说白了,不是代码写错了,是环境没搭对。

2.1 pyserial 库安装

Python 操作串口,最主流的库就是 pyserial。它跨平台,Windows、macOS、Linux 都能用。

安装方式很简单,打开终端(Windows 用 cmd 或 PowerShell,macOS/Linux 用 bash),敲一行命令:

pip install pyserial

如果你电脑上同时装了 Python 2 和 Python 3,可能需要用 pip3:

pip3 install pyserial
小提示: 我个人习惯在虚拟环境里装。用 python -m venv venv 创建环境,再激活、安装。这样不会把系统 Python 搞乱。

验证是否装成功,进 Python 交互环境试试:

import serial
print(serial.__version__)

能打印出版本号,就说明装好了。如果报 ModuleNotFoundError,嗯,检查一下 pip 是不是装到了正确的 Python 环境里。

2.2 系统串口枚举

装好库之后,第一件事就是看看系统里有哪些串口。pyserial 提供了一个工具方法:

import serial.tools.list_ports

ports = serial.tools.list_ports.comports()
for port in ports:
    print(port.device, port.description, port.hwid)

这段代码会列出所有可用的串口。每个端口对象包含三个关键信息:

属性 含义 示例
device 设备路径/名称 COM3 或 /dev/ttyUSB0
description 设备描述 USB Serial Port (COM3)
hwid 硬件ID USB VID:PID=0403:6001

我在项目中经常用 hwid 来区分不同设备。比如同时插了两个 FTDI 的 USB 转串口,光看 COM 号分不清谁是谁,但 VID:PID 能帮你精准定位。

实战技巧: 写一个自动匹配函数,根据 VID:PID 找到目标串口,而不是硬编码 COM 号。这样换台电脑也能跑。

2.3 虚拟串口(VCP)驱动

现在很多设备用的是 USB 转串口芯片,比如 CH340、CP2102、FT232。这些芯片需要安装驱动,才能在系统里虚拟出一个串口。

常见的芯片和驱动:

芯片型号 厂商 驱动名称 备注
CH340/CH341 南京沁恒 CH340SER Windows 需手动装,macOS/Linux 内核自带
CP2102 Silicon Labs CP210x VCP 各平台都有官方驱动
FT232 FTDI FTDI VCP 最稳定,但假货多
PL2303 Prolific PL2303 VCP 旧版驱动有兼容问题

插上设备后,打开设备管理器(Windows)或运行 ls /dev/tty*(macOS/Linux),看看有没有新增的串口。如果没有,八成是驱动没装对。

避坑指南: 我曾经被 CH340 的驱动坑过——Windows 10 自动更新会给你装一个旧版驱动,导致波特率一高就丢数据。解决办法是去沁恒官网下最新版,手动替换。

2.4 常见权限问题解决

这个问题在 Linux 和 macOS 上特别常见。你插上设备,list_ports 也能看到,但一打开就报 PermissionError。

原因很简单——当前用户没有访问串口设备的权限。

Linux 下的解决办法:

  1. 把用户加入 dialout 组:sudo usermod -a -G dialout $USER
  2. 注销重新登录,或者重启。
  3. 再试一次,应该就能打开了。

macOS 下类似:

  1. 检查 /dev/cu.* 和 /dev/tty.* 的权限。
  2. 如果不行,用 sudo chmod 666 /dev/cu.usbserial-xxx 临时解决。
  3. 长期方案是写一个 udev 规则(Linux)或安装驱动时勾选“允许非 root 用户访问”。
小技巧: 在 Windows 上,权限问题相对少。但如果你用 WSL(Windows Subsystem for Linux),记得把 USB 设备通过 usbipd 挂载到 WSL 里,否则 WSL 里根本看不到 COM 口。

2.5 本章知识体系

下面这张图把本章的核心逻辑串起来了。从安装库,到枚举串口,再到驱动和权限,每一步都是下一环的前提。

串口调试环境搭建流程 串口调试环境搭建流程 安装 pyserial 枚举系统串口 安装 VCP 驱动 解决权限问题 成功打开串口 常见问题 • 驱动未安装 → 设备不可见 • 权限不足 → 无法打开 • 端口被占用 → 打开失败