linux下通过shell命令测试串口
基本操作
linux思想:万物皆文件,串口在linux中以字符型设备存在,名称一般为/dev/tty。
如果是USB转串口一般是/dev/ttyUSB。下文假设串口为ttyUSB0。
- 查看参数:
stty -F /dev/ttyUSB0
- 设置波特率:`stty -F /dev/ttyUSB0 speed 9600
收发数据
- 先打开后台接收:
cat /dev/ttyUSB0 &
- 发送:
echo hello >/dev/ttyUSB0
- 可以使用printf做更精确的控制:
printf 'hello\r' >/dev/ttyUSB0
其他串口终端工具
可以使用这些终端工具配合expect脚本实现非交互式收发
- microcom
- minicom
可以参考的非交互式收发脚本
注意cat/read的表现可能跟系统的实现有关,结果可能不符合预期!!!
点击查看代码
#!/usr/bin/expect
#-------------------------------------------------- about us
# Product: auto microcom
# Author:bert
# Last Modified: 2022/12/26
# Version:001
# Use:This script allows us to use microcom non-interactively
# license: this script is based GPL
# Usage: comtool.ex <port> <cmd>
# set port /dev/ttyUSB3
set port [lindex $argv 0]
set cmd [lindex $argv 1]
set timeout 1
spawn -noecho microcom $port
expect {
timeout {send $cmd\r}
}
set timeout 3
expect {
"\r\n" {exit 0}
timeout {}
}
expect eof
点击查看代码
#!/bin/sh
stty -F /dev/ttyUSB0 115200 #CONFIGURE SERIAL PORT
exec 3</dev/ttyUSB0 #REDIRECT SERIAL OUTPUT TO FD 3
cat <&3 > /tmp/ttyDump.dat & #REDIRECT SERIAL OUTPUT TO FILE
PID=$! #SAVE PID TO KILL CAT
echo "R" > /dev/ttyUSB0 #SEND COMMAND STRING TO SERIAL PORT
sleep 0.2s #WAIT FOR RESPONSE
kill $PID #KILL CAT PROCESS
wait $PID 2>/dev/null #SUPRESS "Terminated" output
exec 3<&- #FREE FD 3
cat /tmp/ttyDump.dat #DUMP CAPTURED DATA
点击查看代码
#!/bin/sh
exec 99<>/dev/ttyUSB0
printf "QPI\r" >&99
while read -t 3 line <&99;do echo $line;done