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/article/487138.html

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

相关推荐

  • java版mc开服务器要多少钱

    在Java版我的世界(MC)中开一个服务器,月成本从零元到数千元不等,但若想让三五好友稳定流畅联机,一台入门级云服务器每月花费大约在50元至150元区间;若要支撑百人以上规模的社区服,预算则需要提升至每月500元以上,这笔费用主要取决于你选择的部署方式、在线人数峰值以及你愿意投入的维护精力,下面,我将结合十余年……

    2026年8月26日
    1300
  • k8s部署需要几台服务器?,k8s集群最少几台机器

    生产环境最少3台服务器,推荐5到7台,测试环境1到3台即可,这是K8s集群部署的公认起步线,具体数量取决于你的业务规模、高可用要求和预算,本文从实际运维视角,拆解不同场景下的服务器数量规划,并给出可落地的硬件参考,先搞明白K8s的节点角色K8s集群由两类节点组成:控制平面节点(Master)和工作节点(Node……

    2026年8月27日
    800
  • 卖二手服务器机柜多少钱

    二手服务器机柜的成交价当前集中在800到2000元之间,四十二U标准深柜和品牌成色好的机型能冲到3000元以上,但多数情况下几百元就能拿下,二手服务器机柜定价看什么:四个维度摸清底价卖机柜的人最怕标错价,报高了没人理,报低了亏一半,机柜不是消耗品,本身是一块冷轧钢板加立柱导轨,定价逻辑离不开四个硬指标,规格尺寸……

    2026年8月26日
    900
  • 怎么肉眼看服务器内存条是多少g

    肉眼识别服务器内存条容量,最直接的方法是查看内存条上的标签贴纸,上面会明确标注“16GB”“32GB”等字样,如果标签磨损或缺失,可通过颗粒编号和数量推算,为什么需要掌握肉眼识别内存条容量在服务器运维中,硬件升级、故障排查或二手采购时,快速确认内存容量是基础技能,服务器内存条通常没有外壳遮挡,直接暴露在插槽中……

    2026年8月16日
    2000
  • 5M服务器同时访问价格贵不贵,一个月多少钱

    5M带宽的服务器同时访问人数没有固定数值,理论上限约100人/秒(按50KB页面计算)或20人/秒(按256KB页面计算),实际取决于页面体积和用户行为特征,综合月成本通常在每年数百元至数千元区间,很多朋友在选购服务器时,一看到“5M带宽”就犯嘀咕:这到底能扛住多少人访问?今天就掰开揉碎聊清楚这个问题,你可以把……

    2026年8月20日
    1100
  • 2b2t到底是一个多少人的服务器,怎么进2b2t

    2b2t是一个同时在线人数通常在200-400人之间,但排队人数经常超过2000的Minecraft无政府状态服务器, 这个数字看似不大,但排队通道的长龙却常年压得服务器喘不过气,背后折射出的是Minecraft史上最古老服务器之一的特殊地位,2b2t到底有多少人同时在线?官方容量上限早期阶段(2010-201……

    2026年7月24日
    1100
  • linux curl xml怎么用?curl命令发送xml格式数据

    在Linux系统中,curl结合XML数据交互的核心在于利用HTTP头指定内容类型,并通过管道或重定向处理响应,同时需警惕XML注入风险并合理配置超时与重试机制以确保数据传输的稳定性,Linux系统管理员和开发者日常处理API接口、配置文件同步或数据抓取时,curl几乎是首选工具,它不仅能下载文件,更能精准控制……

    2026年7月7日
    9410
  • 一般服务器的cpu核数是多少,多少核合适?

    一般服务器的CPU核数没有统一标准,主流物理服务器集中在8核至16核,云服务器则以2核至8核vCPU最为常见,具体选型需结合业务场景、并发规模与预算综合判断,CPU核数没有标准答案,只有场景答案一般服务器几个核”这个问题,通信行业从业者与资深运维人员的回答往往不同,这并非专业程度差异,而是因为服务器CPU核数从……

    2026年8月22日
    200
  • 42U服务器机柜租一年多少钱,怎么收费?

    42U服务器机柜一年的租赁费用通常集中在数千元到数万元之间,具体取决于机房等级、带宽和电力配置,选择正规持牌服务商是长期稳定运营的关键,影响42U机柜租赁价格的核心因素机房等级与基础设施等级机柜托管费用首先取决于机房的基础设施等级,Tier 2机房与Tier 3+机房在电力冗余、制冷系统和网络可靠性上差距明显……

    2026年7月30日
    300
  • 租一个2核4g的服务器大概多少钱,哪家云服务器最便宜?

    租一个2核4g的服务器,月租大概在50元到150元之间,年付能压到500元上下,具体取决于厂商、时长和带宽配置,2核4G服务器价格由哪些因素决定不少新手租服务器时,第一反应就是搜“2核4g服务器价格”,但看到各家报价从几十到几百不等,很容易懵,价格差异不是凭空来的,下面几个变量直接影响最终账单,云厂商定价策略差……

    2026年7月23日
    1600

发表回复

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