Linux 串口指令是嵌入式开发、设备调试、工业控制等领域中不可或缺的工具,通过命令行与串口设备进行高效通信,实现对硬件设备的配置、数据收发和状态监控,本文将从串口基础概念、核心指令详解、高级应用技巧及常见问题解决四个方面,系统介绍 Linux 串口指令的使用方法,帮助读者快速掌握这一实用技能。

串口基础概念与设备识别
在 Linux 系统中,串口设备通常被抽象为字符设备文件,位于 /dev 目录下,常见的串口设备名包括 /dev/ttyS0(表示 COM1)、/dev/ttyS1(COM2)等,对于 USB 转串口设备,则可能显示为 /dev/ttyUSB0、/dev/ttyUSB1 或 /dev/ttyACM0 等,要确认系统中可用的串口设备,可通过以下指令进行查看:
ls -l /dev/ttyS* /dev/ttyUSB* /dev/ttyACM*
执行后,若显示类似 crw-rw---- 1 root dialout 4, 64 5月  10 10:00 /dev/ttyUSB0 的输出,则表明系统已识别该串口设备。4 表示主设备号,64 表示次设备号,dialout 为设备所属用户组,普通用户需加入该组才能对串口进行读写操作(可通过 sudo usermod -aG dialout $USER 添加用户到组)。
核心串口指令详解
Linux 系统提供了多个串口操作工具,stty、minicom、screen 和 cat/echo 是最常用的指令,分别用于串口参数配置、交互式通信、会话管理和数据收发。
stty:串口参数配置
stty 指令用于设置串口的波特率、数据位、停止位、校验位等通信参数,是串口通信的基础配置工具,其基本语法为:
stty -F [设备名] [参数]
常用参数包括:
波特率:如9600、19200、115200等;数据位:cs5~cs8(默认cs8);停止位:-cstopb(1 位停止位)、cstopb(2 位停止位);校验位:parenb(启用校验)、parodd(奇校验)、-parodd(偶校验)、-parenb(无校验);- 流控:
ixon/ixoff(软件流控)、rtscts(硬件流控)。 
示例:将 /dev/ttyUSB0 配置为波特率 115200、8 位数据位、1 位停止位、无校验、无流控:  
stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb -ixon -ixoff -rtscts
配置完成后,可通过 stty -F /dev/ttyUSB0 查看当前参数,确认设置是否生效。
minicom:交互式串口终端
minicom 是一个功能强大的串口通信程序,支持交互式操作、文件传输和日志记录,适用于设备调试,首先需安装 minicom:  
sudo apt install minicom # Debian/Ubuntu 系统 sudo yum install minicom # CentOS/RHEL 系统
配置步骤:

- 初始化配置文件:
sudo minicom -s
 - 在配置界面选择 “Serial port setup”,设置串口设备(如 
/dev/ttyUSB0)、波特率、数据位等参数(与stty参数一致); - 保存配置为默认配置(选择 “Save setup as dfl”),退出后直接输入 
minicom即可启动串口终端。 
minicom 常用快捷键:Ctrl+A 进入主菜单,Ctrl+X 退出,Ctrl+Q 发送 Break 信号,Ctrl+S 暂停接收,Ctrl+Q 恢复接收。
screen:轻量级串口会话管理
screen 是一个多路复用终端工具,可用于创建持久化的串口会话,适合长时间监控或自动化场景,安装方式与 minicom 类似,配置和使用更为简洁:  
启动串口会话:
screen /dev/ttyUSB0 115200
退出时可通过 Ctrl+A 然后按 D 暂时会话(后台运行),Ctrl+A 然后按 K 终止会话,恢复会话则使用:  
screen -r
cat 与 echo:基础数据收发
对于简单的数据收发,可直接结合 cat(读取数据)和 echo(发送数据)使用,但需注意 cat 会持续读取直到手动终止(Ctrl+C),而 echo 发送的数据需添加 \n 触发设备响应(部分设备需配置行缓冲)。  
示例:
- 发送指令 “AT” 并接收响应:
echo "AT\n" > /dev/ttyUSB0 & cat /dev/ttyUSB0
&表示后台运行echo,避免阻塞cat读取。 
高级应用技巧
串口数据重定向与管道
Linux 的管道机制可将串口数据与其他指令结合,实现自动化处理,通过 grep 过滤串口输出中的特定信息:  
cat /dev/ttyUSB0 | grep "OK" > log.txt
该指令将持续读取串口数据,仅包含 “OK” 的行会被保存到 log.txt 文件中。

脚本化串口通信
通过 expect 或 Python 的 pyserial 库可实现串口通信的自动化脚本,以下为 Python 示例,实现发送指令并读取响应:  
import serial
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
ser.write(b"AT\n")
response = ser.read(100).decode('utf-8')
print(response)
ser.close()
串口日志记录与分析
使用 socat 工具可将串口数据重定向到文件或网络,便于后续分析:  
socat -d -d pty,raw,echo=0 /dev/ttyUSB0 file:/tmp/serial.log,waitlock=/tmp/serial.lock
该指令将串口数据实时写入 /tmp/serial.log,同时支持网络传输(需配置相应参数)。
常见问题与解决方案
权限问题
现象:访问串口时提示 “Permission denied”。
解决:确保当前用户属于 dialout 组(或对应串口设备的用户组),或使用 sudo 临时提升权限。
波特率不匹配
现象:接收数据乱码或无响应。
解决:通过 stty -F /dev/ttyUSB0 检查当前波特率,确保与设备端设置一致。
设备未识别
现象:ls /dev/ttyUSB* 无输出。
解决:检查物理连接(串口线、转接头),确认驱动是否安装(如 ch341 驱动需手动加载:sudo modprobe ch341)。
数据丢失
现象:发送数据后设备未响应,或接收数据不完整。
解决:检查流控设置(关闭硬件流控 rtscts 和软件流控 ixon/ixoff),调整串口缓冲区大小(通过 stty 的 min 和 time 参数)。
Linux 串口指令是开发者与硬件设备交互的重要桥梁,从基础的 stty 参数配置到 minicom、screen 的交互式操作,再到脚本化与日志分析,掌握这些工具能显著提升调试效率,在实际应用中,需根据设备需求选择合适的指令组合,并结合权限管理、参数匹配等细节处理,确保通信稳定可靠,通过持续实践,读者可灵活运用串口指令解决各类嵌入式开发与设备调试问题。
















