Python串口通信发送与接收实现及pyserial配置指南

云舒
云舒
发布时间:2026-10-11| 2人浏览过
原创

Python通过第三方库pyserial可快速实现与外部设备的串口通信。本文详解如何安装依赖、配置波特率等参数、执行数据发送与接收,并提供完整代码与常见报错排查方法,助力开发者稳定完成硬件联调。

串口通信基础与依赖环境

串口通信采用逐字节传输方式,需要预留响应时间进行握手与校验,适用于传感器、调制解调器等外设的数据交换。需注意,Python标准库中并不包含该模块,官方通用方案为安装第三方依赖 pyserial。在终端执行以下命令完成环境准备:

pip install pyserial

第1步:建立串口连接并配置参数

目的:初始化通信通道,确保主机与外设的物理链路及协议层参数一致。
入口:Python脚本首行导入模块
动作与参数:调用 serial.Serial() 实例化对象。关键字段说明如下:
- port:串口号(Linux/Mac 通常为 /dev/ttyUSB0 或 /dev/cu.usbserial-*;Windows 通常为 COM3)
- baudrate:波特率,如 9600,需与设备端严格匹配
- bytesize:数据位,常用 8 位
- parity:奇偶校验,'N' 表示无校验
- stopbits:停止位,通常设为 1
- timeout:读取超时秒数,设为 1 可防止程序陷入永久阻塞

import serial

ser = serial.Serial(
    port='COM3',          # 请替换为实际端口号
    baudrate=9600,
    bytesize=8,
    parity='N',
    stopbits=1,
    timeout=1
)

第2步:构造并发送二进制指令

目的:将业务指令转换为硬件可读的二进制流并推送到缓冲区。
入口:已打开的串口对象
动作:调用 ser.write() 方法。该方法仅接受 bytes 类型,若为普通字符串需显式编码(默认 UTF-8 或 ASCII)。

# 示例:发送十六进制指令与纯文本指令
ser.write(bytes([0x55, 0xAA, 0x01]))
ser.write(b'CMD_START\r\n')

第3步:按约定读取并解析回传数据

目的:同步获取设备反馈,验证通信状态。
入口:发送操作完成后立即执行
动作:调用 ser.read(n) 指定抓取字节数。若需等待特定结束符(如换行或十六进制帧尾),可改用 ser.readline() 配合条件循环判断,避免截断半包数据。

# 读取指定长度或等待超时返回
raw_data = ser.read(10)
print(f'Received: {raw_data}')

# 安全关闭连接,释放系统句柄
ser.close()

完整收发流程示例

将上述逻辑整合为结构化脚本,加入异常捕获以保证资源回收。实际调试时建议先用串口助手测试通断,再切入代码验证。

import serial

try:
    # 1. 初始化
    ser = serial.Serial('COM3', 9600, timeout=1)
    print('串口已打开')

    # 2. 发送
    ser.write(b'TEST_DATA\n')

    # 3. 接收
    response = ser.read(20)
    print('回传结果:', response)

except serial.SerialException as e:
    print('通信异常:', e)
finally:
    # 4. 清理
    if 'ser' in locals() and ser.is_open:
        ser.close()
        print('串口已关闭')

常见问题与排错指引

  • 端口被占用或无权限访问:Windows 下检查是否已被其他串口软件独占;Linux/Mac 需确认当前用户具备 tty 权限(可尝试 sudo chmod a+rw /dev/ttyUSB0)。
  • 打印乱码或报 UnicodeDecodeError:双方波特率、数据位或校验位不一致导致比特错位;或接收端未正确解码,建议使用 response.decode('utf-8', errors='ignore') 兼容处理。
  • read() 函数卡死无响应:未正确设置 timeout 或未检测到有效数据包。建议启用日志打印中间态,或改用线程轮询配合 ser.in_waiting 属性预判数据就绪情况。

以上就是基于Python实现串口数据收发与解析的详细操作指南,更多关于软硬件交互与物联网开发的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。