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
posted @ 2019-10-26 15:57  bert_qin  阅读(13261)  评论(0编辑  收藏  举报