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://idctop.com/linux%e4%b8%8bpython%e5%a6%82%e4%bd%95%e6%93%8d%e4%bd%9c%e4%b8%b2%e5%8f%a3%ef%bc%9fpython%e4%b8%b2%e5%8f%a3%e9%80%9a%e4%bf%a1%e5%ae%9e%e4%be%8b/

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

相关推荐

  • 无锡电信的域名解析服务器是多少,怎么手动修改?

    无锡电信的DNS服务器主用地址是218.2.2.2,备用地址是218.2.135.1,这是江苏电信面向全省的统一出口,无锡地区宽带用户直接填入这两个地址即可解决大部分网页打不开、游戏延迟高的问题,很多朋友在排查网络故障时,第一步想到的就是重启光猫和路由器,但如果你遇到的是“微信能发,网页转圈”这种典型症状,问题……

    2026年10月12日
    100
  • 仙宫云服务器多少钱一台,具体价格和性价比如何?

    仙宫云服务器的价格并不高,入门级年付通常只要百元档,月付几十元起,但最终费用由CPU、内存、带宽、计费方式共同决定,选购前先把价格构成吃透,再下单最稳妥,先搞懂仙宫云服务器价格是怎么算出来的仙宫云服务器的定价逻辑不复杂,按资源组合计费,核心变量就三个:配置、时长、计费模式,计费模式:包年包月与按量付费包年包月……

    2026年10月11日
    100
  • 域名服务器每年要花多少钱?,域名和服务器一年多少钱

    买域名服务器的费用没有固定答案,完全取决于类型:免费的公共DNS解析一年0元,自建托管型域名服务器(带公网IP的VPS或物理机)根据配置不同,年成本大致在500元至5000元区间,而企业级权威DNS托管服务通常在1000元至3000元/年之间,先算明白:域名服务器的钱花在哪三个地方域名服务器的费用构成比普通网站……

    相关资讯 2026年10月22日
    000
  • 买帕鲁服务器到底要多少钱,帕鲁服务器怎么租便宜?

    买帕鲁服务器的价格并不神秘,主流配置一个月几十到两百元,高配千元左右,具体取决于联机人数、模组数量和线路质量, 先说结论:如果你只是拉三五好友玩,4核8G内存的小套餐完全够,月付大概在50到120元之间;如果想开32人服,那预算得提到400元往上,还得考虑带宽和防攻击,帕鲁服务器的价格究竟由什么决定?帕鲁游戏服……

    2026年10月14日
    100
  • 一台服务器能带多少显卡?,服务器显卡扩展上限怎么看

    一台服务器能带多少卡,常规答案是2到8张,最主流的配置是4卡和8卡,少见的高密度机型可以塞进16张甚至24张,决定这个数字的不是“想装多少”,而是机箱空间、供电能力、平台通道数和散热设计四道硬约束,多数服务器停在4到8卡在AI训练、推理和渲染场景里,业界默认的高密度配置就是8卡,NVIDIA自家DGX/HGX系……

    2026年9月26日
    100
  • 光芒服务器一金多少钱?,光芒服务器金币价格怎么算?

    常规云服务器折算下来常见几元到几十元一金/天的量级,游戏服、高防独服或大带宽场景会更高;真正要看的是一金对应什么资源单位,以及CPU、内存、带宽、防御、机房和计费周期, 如果你拿到的报价只写“多少钱一金”,不写配置和计费口径,这份报价基本没法横向比较,“一金”先锁口径,不然比价没有意义租赁报价里的“一金”在服务……

    相关资讯 2026年10月24日
    100
  • 共享服务器主机租用多少钱,哪家性价比高?

    共享服务器主机多少钱?目前国内主流云服务商的标准配置下,月付价格普遍在50元至300元之间,年付通常能降到500元至2000元区间,具体取决于CPU、内存、带宽和机房线路,选择共享服务器(云服务器的一种通俗称法),本质上是在为“计算资源的使用权”付费,而非购买硬件,理解了这一点,你就不会为价格差异感到困惑——同……

    相关资讯 2026年10月19日
    000
  • 一套终端服务器需要多少钱,哪个品牌性价比高?

    终端服务器多少钱一套?这个问题没有固定价签,通常在数千元到数万元之间波动,核心取决于你接入多少终端、跑什么应用、以及你对“稳定在线”愿意投入多少成本,先别问价格,先把你自己的场景说清楚终端服务器的报价差异,很大程度上源于使用场景的不同,同样是“一套系统”,工厂产线、连锁门店、办公财务室对服务器的要求完全是两个世……

    2026年10月4日
    000
  • slp平台服务器地址到底在哪找?,slp平台服务器地址怎么填

    slp平台没有全网通用的固定服务器地址,你手上那串IP或域名,来自平台官方下发的接入配置;想确认它,用DNS解析加连接追踪两步就能锁定,很多人搜这个问题时,脑子里想的是一个像“123.45.67.89”这样背下来就能用的数字,实际不是,slp平台是典型的分布式接入架构,前端给你一个域名,背后挂着一组按地域、按运……

    相关资讯 2026年10月21日
    100
  • 王星服务器回收多少钱?,回收报价怎么查?

    当前市场上,王星品牌服务器的回收价格没有统一标准,单台报价大致在300元至8000元区间浮动,具体取决于型号配置、成色状态和采购渠道,批量处理时整体打包价会更高,2026年王星服务器回收行情参考王星服务器是国产数据中心设备中流通量较大的品牌之一,尤其是早期采购的机架式和塔式机型,至今仍在大量政企机房中服役,据中……

    相关资讯 2026年10月24日
    200

发表回复

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