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 能帮你精准定位。
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),看看有没有新增的串口。如果没有,八成是驱动没装对。
2.4 常见权限问题解决
这个问题在 Linux 和 macOS 上特别常见。你插上设备,list_ports 也能看到,但一打开就报 PermissionError。
原因很简单——当前用户没有访问串口设备的权限。
Linux 下的解决办法:
- 把用户加入
dialout组:sudo usermod -a -G dialout $USER - 注销重新登录,或者重启。
- 再试一次,应该就能打开了。
macOS 下类似:
- 检查
/dev/cu.*和/dev/tty.*的权限。 - 如果不行,用
sudo chmod 666 /dev/cu.usbserial-xxx临时解决。 - 长期方案是写一个 udev 规则(Linux)或安装驱动时勾选“允许非 root 用户访问”。
2.5 本章知识体系
下面这张图把本章的核心逻辑串起来了。从安装库,到枚举串口,再到驱动和权限,每一步都是下一环的前提。