使用脚本对设备的RS485串口进行数据传输测试,并记录到日志
#!/bin/bash
# 生成包含日期的日志文件名
log_file="RS485-$(date +%Y-%m-%d).log"
#记录时间戳
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
# 用于保存cat命令PID的数组
cat_pids=()
# 定义一个函数来设置tty的echo选项
function set_tty_echo {
tty_device=$1
stty -F "$tty_device" -echo
}
# 列出所有tty设备
tty_devices=("/dev/ttyWCH0" "/dev/ttyWCH1" "/dev/ttyWCH2" "/dev/ttyWCH3" "/dev/ttyWCH4"
"/dev/ttyWCH5" "/dev/ttyWCH6" "/dev/ttyWCH7" "/dev/ttyWCH8" "/dev/ttyWCH9")
# 遍历tty设备,设置echo选项并启动cat命令
for tty_device in "${tty_devices[@]}"; do
set_tty_echo "$tty_device"
# 启动cat命令,并将其PID保存到数组中
cat "$tty_device" >> "$log_file" &
cat_pids+=($!) # $! 是上一个后台命令的PID
done
echo " " >> "$log_file"
echo "=====================================" >> "$log_file"
echo " RS485 TEST" >> "$log_file"
echo "脚本由技术部提供,有问题请联系技术部 " >> "$log_file"
echo " 网址:https://www.it525.com " >> "$log_file"
echo "=====================================" >> "$log_file"
echo " " >> "$log_file"
echo "测试时间:$timestamp" >> "$log_file"
# 遍历tty设备,发送测试消息
for tty_device in "${tty_devices[@]}"; do
echo "Test message $tty_device" > "$tty_device"
sleep 1
done
# 脚本结束,杀死所有后台cat命令
for pid in "${cat_pids[@]}"; do
kill "$pid" 2>/dev/null || true # 忽略不存在的PID错误
done
echo "All cat commands have been killed."
echo "Test over ,check $log_file "