Linux下Python如何操作串口?python串口通信实例

在 Linux 系统下使用 Python 进行串口通信,最常用且推荐的库是 pyserial。

以下是完整的指南,包括安装、权限设置、代码示例和常见问题排查。

Python通过串口与stm32进行通信,串口通信,下附链接
加载中
Python通过串口与stm32进行通信,串口通信,下附链接

安装 pyserial

在终端中运行以下命令安装库:

pip install pyserial

获取串口设备名称

在 Linux 中,串口设备通常位于 /dev/ 目录下。

  • USB 转串口(如 CH340, CP2102, FTDI):通常是 /dev/ttyUSB0, /dev/ttyUSB1 等。
  • 蓝牙串口:通常是 /dev/rfcomm0。
  • 原生串口(树莓派等):通常是 /dev/ttyAMA0 或 /dev/ttyS0。

查看当前连接的串口设备:

ls -l /dev/ttyUSB
# 或者
dmesg | grep tty

基本代码示例

发送数据

import serial
import time
# 配置串口参数
# port: 串口名称,如 '/dev/ttyUSB0'
# baudrate: 波特率,需与设备一致,如 9600, 115200
# timeout: 读取超时时间(秒),None 表示阻塞,0 表示非阻塞
ser = serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=9600,
    parity=serial.PARI

Linux下Python如何操作串口?python串口通信实例

TY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) print(f"串口 {ser.name} 已打开") try: # 发送数据(注意:必须发送 bytes 类型) ser.write(b'Hello, Serial!n') print("数据已发送") # 读取响应 response = ser.readline() # 读取一行,包含换行符 if response: print(f"收到响应: {response.decode('utf-8').strip()}") except Exception as e: print(f"发生错误: {e}") finally: # 关闭串口 ser.close() print("串口已关闭")

持续读取数据(接收模式)

import serial
import time
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
try:
    while True:
        if ser.in_waiting > 0:  # 检查是否有数据可读
            line = ser.readline().decode('utf-8').strip()
            print(f"收到: {line}")
        time.sleep(0.1)  # 避免 CPU 占用过高
except KeyboardInterrupt:
    print("n程序退出")
finally:
    ser.close()

常见问题与解决方案

❌ 问题 1:Permission denied(权限被拒绝)

原因:普通用户没有 /dev/ttyUSB0 的读写权限。

解决方案:

  1. 临时解决

    Linux下Python如何操作串口?python串口通信实例

    (每次重启失效):

    sudo chmod 666 /dev/ttyUSB0
  2. 永久解决(推荐):
    将当前用户加入 dialout 组(Ubuntu/Debian)或 tty 组(部分发行版):

    sudo usermod -a -G dialout $USER

    ⚠️ 重要:执行后需要注销并重新登录,或重启系统才能生效。

  3. 验证用户组:

    groups $USER

❌ 问题 2:SerialException: [Errno 5] Input/output error

原因:

  • 串口被其他程序占用(如 Minicom、PuTTY、Arduino IDE 串口监视器)。
  • 设备未正确连接或驱动问题。

解决方案:

  • 关闭所有可能占用串口的程序。
  • 检查物理连接。
  • 尝试重新插拔 USB 设备。

❌ 问题 3:发送/接收乱码

原因:波特率、数据位、停止位、校验位不匹配。

解决方案:

  • 确保 baudrate 与设备完全一致。
  • 检查 parity, stopbits, bytesize 设置。
  • 确认发送的是

    Linux下Python如何操作串口?python串口通信实例

    bytes 类型(使用 b'...' 或 .encode())。


高级技巧

使用上下文管理器(推荐)

使用 with 语句可以自动关闭串口,更安全:

import serial
with serial.Serial('/dev/ttyUSB0', 9600, timeout=1) as ser:
    ser.write(b'Testn')
    response = ser.readline()
    print(response)
# 离开 with 块时,串口会自动关闭

获取可用串口列表

import serial.tools.list_ports
ports = serial.tools.list_ports.comports()
for port in ports:
    print(f"{port.device}: {port.description}")

步骤 操作
1 安装 pyserial:pip install pyserial
2 确认串口设备名:ls /dev/ttyUSB
3 添加用户到 dialout 组:sudo usermod -a -G dialout $USER
4 重启或重新登录
5 编写 Python 代码,注意发送 bytes 类型数据

如有具体问题(如特定硬件型号、错误日志),欢迎提供更多信息!

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/487138.html

赞 (0)
Linux无法重启怎么办?linux系统reboot命令失效解决
上一篇 2026年7月12日 13:48
apache发布linux是什么?apache linux版本怎么下载
下一篇 2026年7月12日 13:50

相关推荐

  • aspx网站编辑软件哪个好?aspx网站编辑软件推荐

    选择合适的编辑工具直接决定ASP.NET网站的开发效率与后期维护成本,对于基于.aspx后缀的动态网页,核心结论在于:专业的aspx网站编辑软件必须具备智能代码提示、可视化设计视图与强大的调试功能,这远胜于通用的文本编辑器, 开发者应优先选择微软官方的Visual Studio系列或其轻量级版本,这类工具不仅能……

    2026年3月31日
    9500
  • Apache双向认证是什么?RabbitMQ支持双向认证吗

    RabbitMQ原生支持双向认证(mTLS),但默认未开启,需手动配置CA证书、服务端证书及客户端证书,并修改连接参数以启用SSL/TLS加密通道,在构建高可用的消息队列架构时,数据安全往往是企业最敏感的神经,很多技术负责人在迁移或新建集群时,都会面临一个核心疑问:Apache Kafka支持双向认证,那Rab……

    2026年6月10日
    4100
  • 日活一万的app服务器需要多少钱,怎么选?

    日活一万的App,服务器成本通常在每月800元到3000元之间,具体取决于你的技术架构、服务商定价和资源使用方式,这个区间覆盖了从单体架构上云到简单集群部署的常见场景,如果你选择自建机房或使用高端定制方案,费用会更高,但对绝大多数创业团队来说,初期在这个预算内就能稳定支撑一万日活,下面我们把每一笔钱拆开来看,成……

    2026年8月21日
    300
  • 安装MySQL数据库连接失败怎么办?MySQL安装教程详解

    成功建立MySQL数据库连接的核心在于“环境配置的正确性”与“权限管理的严密性”,单纯的安装MySQL软件只是基础,实现安全、稳定的数据库连接才是最终目标,整个过程必须遵循“安装-配置-授权-连接”的标准化流程,任何一个环节的疏漏都会导致连接失败,核心结论是:一个可用的MySQL连接环境,依赖于正确的安装方式……

    2026年3月28日
    10200
  • 1kb信息到电信服务器要多少钱,流量计费标准是什么?

    1KB信息传输到电信服务器,实际计费成本几乎可以忽略不计,其费用完全取决于你所选的IDC服务商的带宽计费模式,而非数据传输的字节数,换句话说,无论是1KB还是1MB,在绝大多数商业云服务中,它只是一个数据包层面的微小脉冲,并不会产生独立的账单项,真正决定你钱包厚度的,是带宽峰值、流量包规格,以及服务商背后的机房……

    2026年8月23日
    100
  • ProfitServer荷兰VPS五折值得买吗,阿姆斯特丹100M带宽不限流量

    ProfitServer荷兰VPS凭借阿姆斯特丹节点的低延迟与100M大带宽优势,以月付2.88美元起的五折特惠价格,成为搭建海外网站、游戏服及开发测试环境的极高性价比选择,在云计算市场内卷日益激烈的2026年,寻找稳定且廉价的海外服务器资源已成为许多开发者和中小企业的刚需,ProfitServer作为业内知名……

    2026年7月10日
    11400
  • asp虚拟主机免费试用怎么申请?asp虚拟主机免费试用多久

    申请ASP虚拟主机免费试用的核心结论是:目前主流服务商提供的免费试用多为限时体验(7-30天)或功能受限的演示环境,旨在验证服务器稳定性与兼容性,而非永久免费资源;建议优先选择支持在线即时开通、无需人工审核且明确标注“免费试用”条款的正规IDC厂商,并在试用期内重点测试数据库连接速度与IIS配置兼容性,在202……

    2026年6月2日
    4200
  • 人工智能设计大赛怎么报名?AI人工智能大赛参赛条件

    AI人工智能设计大赛不仅是技术创新的竞技场,更是推动人工智能从理论走向落地应用的关键引擎,其核心价值在于通过高强度的实战演练,挖掘并验证具备商业潜力与社会价值的解决方案,在当前数字化转型的浪潮中,此类赛事已成为连接顶尖技术人才与产业实际需求的桥梁,通过标准化的评审机制与真实场景的挑战,极大地加速了人工智能技术的……

    2026年3月30日
    10000
  • 安装pear教程_使用教程,pear安装步骤详细流程是什么?

    PEAR作为PHP扩展与应用仓库,是PHP开发中不可或缺的工具集,能够极大提升开发效率并规范代码结构,对于开发者而言,掌握PEAR的安装与配置是构建专业PHP环境的关键一步,核心结论在于:安装PEAR并非简单的下载解压,而是需要根据系统环境选择最优方案,并正确配置环境变量与配置文件,才能确保其在项目中稳定运行……

    2026年3月23日
    8900
  • Apache搭建服务器如何配置?Apache配置教程

    Apache搭建服务器的核心在于正确安装软件、修改配置文件httpd.conf以设定监听端口和文档根目录,并通过重启服务使配置生效,整个过程无需复杂代码即可实现本地或公网访问,很多开发者在初次接触Web服务器时,往往被繁琐的命令行吓退,Apache作为老牌且稳定的开源Web服务器软件,其配置逻辑非常直观,只要理……

    2026年6月15日
    2600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注