Linux系统给串口发送命令
Linux系统给串口发送命令详细介绍
在 Linux 系统中向串口发送命令,需先确认串口设备路径、配置参数(如波特率、数据位等),然后通过命令行工具或编程方式实现。以下是详细步骤:
一、准备工作
- 确认串口设备路径
- 传统串口(RS-232):设备文件通常为
/dev/ttyS0、/dev/ttyS1等(对应 COM1、COM2 等)。 - USB 转串口(如 CP2102、CH340 芯片):设备文件通常为
/dev/ttyUSB0、/dev/ttyUSB1等(插入 USB 后自动生成)。
使用以下命令查看设备是否存在:
bash
/dev/ttyS*/dev/ttyUSB*
- 传统串口(RS-232):设备文件通常为
- 权限设置
串口设备默认权限为root:dialout,普通用户需加入dialout组或使用sudo:
bashdialout
二、通过命令行发送命令
方法 1:使用
echo + 串口设备文件(适合发送单次命令)
- 配置串口参数(以波特率 9600、8 数据位、无校验、1 停止位为例):
bashstty /dev/ttyUSB0 cs8参数说明:
-F:指定设备文件9600:波特率cs8:8 数据位-cstopb:1 停止位(默认 2 停止位,加-取消)-parenb:无校验位(parenb为启用校验)
- 发送命令(需以换行符结尾,部分设备需要
\r\n):
bash\n" /dev/ttyUSB0 /dev/null-e:允许转义字符(如\r\n)tee:将输出写入串口,同时屏蔽终端显示(> /dev/null)
方法 2:使用
minicom(交互式工具,适合调试)
- 安装
minicom:
bashminicomdnf minicom
- 直接打开串口并配置参数:
bashminicom /dev/ttyUSB0-D:指定设备文件-b:波特率
进入后可直接输入命令,按Ctrl+A Z查看帮助,Ctrl+A X退出。
方法 3:使用
screen(轻量级终端工具)
bash
/dev/ttyUSB0
输入命令后回车发送,退出需先按 Ctrl+A K,再确认。
三、通过脚本发送命令(以 Python 为例)
使用 pyserial 库,适合自动化场景:
- 安装库:
bashpip pyserial - 编写脚本
serial_send.py:
pythonserialser serialSerial
port
baudrate
bytesizeserialEIGHTBITS
parityserialPARITY_NONE
stopbitsserialSTOPBITS_ONE
timeout
command
serwritecommandencode
response serreadalldecode
response
serclose
- 运行脚本:
bashpython serial_send.py
四、注意事项
- 参数匹配:确保串口参数(波特率、校验位等)与目标设备完全一致,否则无法通信。
- 设备路径:USB 转串口设备插拔后路径可能变化(如
ttyUSB0变为ttyUSB1),建议通过udev规则固定设备名。 - 权限问题:若提示
Permission denied,请检查是否使用sudo或加入dialout组。 - 换行符:部分设备(如串口调试助手、AT 设备)需要
\r\n结尾(ASCII 码0x0D 0x0A),而非单纯的\n。
五、常用串口参数配置(
stty 命令)
| 参数 | 说明 |
|---|---|
9600 |
波特率(可设为 115200、4800 等) |
cs5-cs8 |
数据位(5-8 位,默认 8 位) |
-parenb |
无校验位(parenb 为启用) |
-cstopb |
1 停止位(默认 2 停止位) |
min 1 time 0 |
读取时最小字符数和超时时间 |
示例:配置波特率 115200、8 数据位、无校验、1 停止位:
bash
stty /dev/ttyUSB0 cs8
912 stty /dev/ttyUSB0 cs8
通过以上方法,可在 Linux 下灵活地向串口设备发送命令。根据需求选择简单的命令行工具或脚本编程方式即可。