当前位置:首页 > Linux > 正文

Linux如何快速打开串口

在Linux中打开串口需先确认设备节点(如 /dev/ttyS0),使用 stty配置波特率等参数(如 stty -F /dev/ttyS0 9600),最后通过程序(如Python的pyserial库或C的open函数)或命令行工具( cat/ echo)读写数据,注意需具备串口访问权限。

前置准备:设备识别与权限配置

  1. 定位串口设备文件

    Linux将串口抽象为设备文件(通常位于/dev/目录):

    ls /dev/ttyS* # 查看原生串口(如COM1对应ttyS0) ls /dev/ttyUSB* # 查看USB转串口设备

    图:典型串口设备文件示例

    Linux如何快速打开串口 第1张

  2. 配置用户权限

    临时添加当前用户到dialout组(需重新登录生效):

    Linux如何快速打开串口 第2张

    sudo usermod -aG dialout $USER && newgrp dialout

    验证权限:

    groups # 应显示dialout组


命令行操作:四种实时通信方法

▶ 方法1:screen命令(最简交互)

screen /dev/ttyUSB0 115200 # 115200为波特率

  • 退出:Ctrl+A → k → y
  • 适用场景:快速测试设备通信

▶ 方法2:minicom(功能更完整)

sudo apt install minicom # 安装 minicom -D /dev/ttyS0 -b 9600 # 启动

  • 配置菜单:Ctrl+A → Z → O
  • 保存配置:Serial port setup中设置设备/波特率

▶ 方法3:picocom(轻量级替代)

sudo apt install picocom picocom -b 57600 /dev/ttyUSB0

  • 退出:Ctrl+A → Ctrl+X

▶ 方法4:stty + echo/cat(底层调试)

stty -F /dev/ttyS0 115200 raw -echo # 配置参数 echo "AT" > /dev/ttyS0 # 发送数据 cat < /dev/ttyS0 & # 后台接收

  • 优势:适合脚本集成


编程实现:Python示例(pyserial库)

import serial ser = serial.Serial( port='/dev/ttyUSB0', baudrate=115200, timeout=1 # 秒为单位 ) ser.write(b'Hello Serial!\n') # 发送二进制数据 response = ser.readline() # 读取一行 print(f"Received: {response.decode()}") ser.close() # 必须关闭释放资源

  • 关键参数
    • bytesize: 数据位(默认8)
    • parity: 校验位(N无校验, E偶校验)
    • stopbits: 停止位(1或2)


故障排查指南

问题现象 解决方案
Permission denied 检查用户是否在dialout组
Device not found 拔插USB设备,观察dmesg | tail输出
乱码数据 确认波特率/校验位与设备一致
无法发送数据 检查RTS/CTS硬件流控设置


安全与最佳实践

  1. 避免root操作:通过组权限管理而非sudo
  2. 资源释放:程序退出前务必执行serial.close()
  3. 参数备份: stty -F /dev/ttyS0 -g > serial_settings # 保存设置 stty -F /dev/ttyS0 $(cat serial_settings) # 恢复


引用说明

  • Linux Serial HOWTO – TLDP官方串口文档
  • pyserial 3.5文档 – Python串口库权威指南
  • IEEE标准:RS-232协议规范(ISO/IEC 7480:1991) 已通过FTDI FT232RL芯片及CP2102模块实测验证,环境为Linux 5.15内核*

提示:操作工控设备时,建议通过USB隔离器保护主机接口,防止电气损坏。

Linux如何快速打开串口 第3张

0