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 安装 pyserialpip 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

相关推荐

  • 国外CDN云存储费用多少,国外云存储怎么收费

    国外cdn云存储费用的优化并非单纯寻找最低单价,而是基于业务架构的精细化成本管理, 在全球化的业务布局中,企业往往容易忽视流量与存储背后的隐性成本,导致账单超出预期,核心结论在于:降低总拥有成本(TCO)的关键在于提升缓存命中率、合理利用分级存储策略以及选择匹配业务特性的计费模式, 只有深入理解价格构成逻辑,并……

    2026年2月28日
    13600
  • 奔图打印机怎么和电脑连接视频,连接不上怎么办?

    通过USB数据线实现稳定的有线连接,或通过Wi-Fi网络实现便捷的无线连接,并正确安装对应的驱动程序,虽然很多用户习惯搜索奔图打印机怎么和电脑连接视频来快速学习,但图文教程往往能提供更精准的步骤指引和故障排查方案,无论选择哪种连接方式,确保打印机通电、处于就绪状态,并从奔图官方渠道获取驱动程序,是成功连接并实现……

    2026年2月22日
    17100
  • 哪家中国云计算公司VPS最好用?国内云服务器哪家性价比高

    2026年并没有绝对的“最好”,只有“最适合”:追求极致性价比和国内合规首选阿里云或腾讯云,出海业务首选阿里云或华为云,而对延迟敏感的高频交易场景则建议考虑百度智能云或金山云,选择云服务器VPS(虚拟专用服务器)不再仅仅是比参数,而是比生态、比网络质量、比售后响应速度,在2026年的市场格局中,头部厂商的技术差……

    2026年6月18日
    3600
  • 安装防火墙_配置防火墙怎么做?防火墙安装配置详细教程

    防火墙作为网络安全的第一道防线,其部署与设定的质量直接决定了服务器或内网环境的生存能力,核心结论在于:安装防火墙并非简单的软件部署,而是一个基于“最小权限原则”的策略构建过程,配置防火墙的正确逻辑是“默认拒绝,按需放行”,唯有通过精细化规则限制流量,才能真正构筑起坚固的数字护城河,前期规划与环境评估:决定成败的……

    2026年3月31日
    11000
  • apache正向代理怎么配置,正向代理服务加固建议有哪些

    Apache作为正向代理服务器时,其安全性直接关系到内网资源的保护与数据传输的隐私性,核心结论在于:构建安全的Apache正向代理服务,必须遵循“最小权限原则”与“深度防御策略”,通过严格的访问控制、协议加密、日志审计及内核级优化,形成闭环安全体系,防止代理服务器成为攻击者的跳板或数据泄露的源头, 实施严格的访……

    2026年4月6日
    9600
  • ASP上拉加载更多怎么实现?ASP报告生成教程

    ASP技术架构下的上拉加载更多功能,本质上是前端交互体验与后端分页查询机制的深度耦合,这一功能的核心价值在于解决海量数据展示与页面加载性能之间的矛盾,通过异步请求(AJAX)与动态DOM渲染,实现数据的按需加载,在各类数据报表系统中,asp 上拉加载更多 _ASP报告的应用不仅提升了用户浏览效率,更降低了服务器……

    2026年3月25日
    11500
  • 如何选择发送短信系统平台?,发送短信哪家好?

    发送短信系统的核心价值在于稳定、快速地触达用户,选型时务必优先评估通道质量与到达率,价格只是表面因素,适合业务场景的发送短信方案才是最优解,企业短信发送系统哪个好?选型先看这三个维度当你在搜索“企业短信发送系统哪个好”时,其实是在寻找一个能平衡成本、稳定性与功能性的工具,发送短信系统的选型不能只看广告,要拆解通……

    2026年8月3日
    400
  • OneProvider真512MB内存吗?VPS主机推荐性价比高

    OneProvider以$5/月的极低门槛提供512MB内存与512GB存储,配合不限流量及高带宽端口,是预算有限但追求高性价比的VPS用户的首选方案,在云服务器市场日益内卷的2026年,对于个人开发者、小型博客运营者以及需要低成本测试环境的初创团队而言,寻找一款既便宜又稳定的VPS服务商成为了刚需,OnePr……

    2026年6月30日
    1610
  • 谷歌云服务器一台有多少个IP

    谷歌云服务器一台默认分配1个内网IP和1个可选外部IP,但通过别名IP、多网卡等高级配置,一台实例可以持有多个内网IP,外部IP则受项目配额约束,谷歌云的IP管理逻辑和传统物理服务器有很大差异,很多人第一次接触时,会习惯性地问“一台机器带几个IP”,但谷歌云把IP视作独立的网络资源,跟虚拟机实例是松耦合关系,搞……

    2026年8月14日
    300
  • 宁波IDC服务器托管一般多少钱,价格贵不贵?

    宁波IDC服务器托管的价格并非固定值,而是由带宽、机柜规格、IP数量及服务商资质共同决定的浮动范围,对于2026年的市场行情,宁波本地标准机柜(42U)单台服务器托管的基础费用集中在每年5000元至15000元之间,若涉及高防或独享带宽,成本会显著上升,宁波IDC托管定价的核心因素宁波作为长三角南翼的数据枢纽……

    2026年8月23日
    100

发表回复

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