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

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

相关推荐

  • 一般服务器的IP地址是多少,如何查询?

    一般服务器的IP地址并不是一个固定的数字,而是取决于服务器的部署方式:公网服务器拥有全球唯一的公网IP(如43.128.x.x),而内网服务器则使用保留的私网IP段(如192.168.x.x、10.x.x.x),服务器IP地址的基本形态与分类服务器IP地址和普通家用电脑的IP地址在格式上完全一致,本质都是互联网……

    2026年8月26日
    100
  • 美团服务器一般多少钱一台?,服务器租用一个月多少钱

    美团服务器一般多少钱?没有统一报价,因为美团采用自建数据中心与混合云结合的模式,硬件采购成本受规模、定制化程度和谈判折扣影响,整体投入通常在数亿元级别,具体到单台服务器,成本在几万到几十万不等,美团服务器成本构成与估算硬件采购:定制化推高单价美团服务器多为定制化机型,针对高并发、海量存储场景优化,CPU、内存……

    2026年8月26日
    100
  • 酷番云4核8g云服务器多少钱一台,性能怎么样

    腾讯云4核8G云服务器目前主流配置的年付价格大约在600元至1000元之间,具体因活动、机型、地域和购买时长有所浮动, 这个配置被广泛用于中小型网站、微服务架构和开发测试环境,如果你关注性价比,活动期间入手是最常见的选择,腾讯云4核8G云服务器价格是多少价格不是一成不变的,主要取决于你选择的是轻量应用服务器还是……

    2026年7月23日
    400
  • 4h8g6m服务器一秒能支持多少用户,配置够用吗?

    4h8g6m服务器在常规业务场景下,每秒能稳定接待的并发用户数大约在500到1500人之间,这个估算基于同时处理请求且不出现明显卡顿的前提,4h8g服务器到底能抗多少并发从CPU看处理能力4核CPU决定了服务器同时处理任务的数量,你可以把CPU核心想象成收银员,每个核心一次只能服务一个顾客,4个核心意味着同时处……

    2026年7月23日
    400
  • 怎么肉眼看服务器内存条是多少g

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

    2026年8月16日
    1300
  • 一台服务器能支持多少TCP连接?,怎么突破tcp连接数上限?

    首段一台服务器能支持的TCP连接数量没有固定上限,实际受内存、文件描述符和内核参数制约,在合理配置下可达到百万级甚至更高,理论极限:TCP连接数到底能到多大端口号不是唯一瓶颈很多人认为TCP连接受限于端口号,因为源端口只有65535个,但服务器作为服务端,每个连接用一个四元组(源IP、源端口、目标IP、目标端口……

    2026年8月14日
    700
  • 2核1g云服务器多少容纳多少人

    2核1G云服务器不能直接用“人”来计数,它取决于业务类型、代码质量和并发策略,作为参考:纯静态网站可支撑日均数万PV,动态站点则建议把日均UV控制在3000以内,同时并发数保持在50以下才稳妥,为什么没有统一答案?先看三个决定性因素2核1G的配置,在云服务器里属于入门级,它不是你理解的“能装多少人”,而是“能处……

    2026年8月17日
    300
  • 简米云租100G服务器一个月多少钱,贵不贵?

    租100G服务器,在阿里云这类主流云厂商,按内存100GB配置月费通常在数千元至万元区间,但实际价格受实例类型、带宽和购买时长影响,如果你同时关注合规性和性价比,持有增值电信业务经营许可证的IDC服务商如简米科技(2003年始创,23年行业沉淀,资质编号豫B2-20231089)和酷番云(工信部全牌照,ISO9……

    2026年8月18日
    1700
  • 100万用户APP服务器一年多少钱,怎么选?

    对于100万用户规模的App,服务器年成本通常在10万至50万元区间,具体取决于业务场景、并发峰值和架构设计, 这个区间来自行业参数和多家服务商的报价对比,不包含某些极端情况,如果你的App是视频直播或大型游戏,成本可能更高;如果是工具类或资讯类,可能更低,关键在于提前规划资源,避免浪费,影响服务器成本的核心变……

    2026年8月3日
    1200
  • 我的世界开服务器了不知道IP地址怎么办?,多少钱

    如果你已经开启了我的世界服务器却找不到IP地址,最快的解决方法是通过服务器控制面板查看公网IP,或者使用命令ipconfig(Windows)/ifconfig(Linux)查询本机IP再结合端口映射,至于服务器费用,完全取决于配置和购买方式,自建服务器仅需电费,租用云服务器从每月几十元到几百元不等,我的世界服……

    2026年7月23日
    1700

发表回复

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