把开机脚本改了一下
This commit is contained in:
79
README.md
Normal file
79
README.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# 智慧医疗2026年代码仓库
|
||||||
|
|
||||||
|
# 一、文件夹说明
|
||||||
|
## 1. `dependencies`
|
||||||
|
`dependencies.txt`存储依赖名称
|
||||||
|
|
||||||
|
## 2. `src`
|
||||||
|
存放源代码
|
||||||
|
|
||||||
|
## 3. `bashes`
|
||||||
|
自动脚本的存放路径
|
||||||
|
|
||||||
|
# 二、关于雷达驱动自动配置脚本的说明
|
||||||
|
## 1. 配置说明:在设备上配置开机自启动(仅使用雷达的情况直接看第二点)
|
||||||
|
1. 放到固定位置并授权
|
||||||
|
```bash
|
||||||
|
sudo cp 你的脚本路径 /usr/local/bin/radar-driver-switch.sh
|
||||||
|
sudo chmod +x /usr/local/bin/radar-driver-switch.sh
|
||||||
|
sudo chown root:root /usr/local/bin/radar-driver-switch.sh
|
||||||
|
```
|
||||||
|
2. 创建 systemd 服务文件
|
||||||
|
```bash
|
||||||
|
sudo vim /etc/systemd/system/radar-driver-switch.service
|
||||||
|
```
|
||||||
|
编辑内容:
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=雷达驱动自动切换程序
|
||||||
|
After=sysfs.target udev.target systemd-udevd.service
|
||||||
|
Before=multi-user.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/usr/local/bin/radar-driver-switch.sh
|
||||||
|
User=root
|
||||||
|
Group=root
|
||||||
|
StandardOutput=journal+console
|
||||||
|
StandardError=journal+console
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
3. 应用开机自启
|
||||||
|
```bash
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable radar-driver-switch.service
|
||||||
|
```
|
||||||
|
4. 测试与debug
|
||||||
|
- 测试一次
|
||||||
|
```bash
|
||||||
|
sudo systemctl start radar-driver-switch.service
|
||||||
|
```
|
||||||
|
- 查看状态 / 日志(排查必用)
|
||||||
|
```bash
|
||||||
|
sudo systemctl status radar-driver-switch.service
|
||||||
|
```
|
||||||
|
- 看 dmesg 日志
|
||||||
|
```bash
|
||||||
|
dmesg | grep 雷达驱动自动切换程序
|
||||||
|
```
|
||||||
|
---
|
||||||
|
### 特别说明
|
||||||
|
1. 关于退出码对应的情况,详见sh文件开头
|
||||||
|
2. 日志输出在`/dev/kmsg`文件中,使用`dmesg | grep 雷达驱动自动切换程序`命令即可查看
|
||||||
|
|
||||||
|
## 2. 使用说明:
|
||||||
|
1. 设备开机自动启动脚本连接雷达。若开机时雷达与设备没有物理连接,则需要手动启动脚本连接雷达
|
||||||
|
2. 查看雷达是否物理连接
|
||||||
|
```bash
|
||||||
|
lsusb
|
||||||
|
```
|
||||||
|
返回的数据中,如果有` ID 1a86:55d4 QinHeng Electronics USB Single Serial`,则物理连接成功。
|
||||||
|
3. 查看是否成功驱动雷达
|
||||||
|
```bash
|
||||||
|
ls /dev/tty*
|
||||||
|
```
|
||||||
|
看返回数据,默认串口连接设备为`ttyACM*`,名为`ttyACM0`的设备是IMU,如果存在`ttyACM1`,则雷达连接失败;
|
||||||
|
|
||||||
|
如果出现`ttyCH340`,则说明雷达设备驱动成功
|
||||||
@@ -11,14 +11,14 @@
|
|||||||
# 7 - 错误:绑定usb_ch343驱动失败
|
# 7 - 错误:绑定usb_ch343驱动失败
|
||||||
|
|
||||||
# 变量设置
|
# 变量设置
|
||||||
TTY_DEVICE="/dev/ttyACM1" # 替换为你要等待的tty设备路径
|
TTY_DEVICE="/dev/ttyACM*" # 替换为你要等待的tty设备路径
|
||||||
CDC_ACM_PATH="/sys/bus/usb/drivers/cdc_acm"
|
CDC_ACM_PATH="/sys/bus/usb/drivers/cdc_acm"
|
||||||
USB_CH343_PATH="/sys/bus/usb/drivers/usb_ch343"
|
USB_CH343_PATH="/sys/bus/usb/drivers/usb_ch343"
|
||||||
CHECK_INTERVAL=1 # 检查设备就绪的时间间隔(秒)
|
CHECK_INTERVAL=1 # 检查设备就绪的时间间隔(秒)
|
||||||
MAX_WAIT_SECONDS=30 # 最大等待时间(秒),0表示无限等待
|
MAX_WAIT_SECONDS=30 # 最大等待时间(秒),0表示无限等待
|
||||||
|
|
||||||
# 初始化变量
|
# 初始化变量
|
||||||
start_time=$(date +%s)
|
start_time=$(cut -d. -f1 /proc/uptime)
|
||||||
current_time=0
|
current_time=0
|
||||||
qinheng_id=""
|
qinheng_id=""
|
||||||
usb_address=""
|
usb_address=""
|
||||||
@@ -30,13 +30,17 @@ cdc_acm_sub_addr=""
|
|||||||
# ----------------- 1. 等待TTY设备就绪 -----------------
|
# ----------------- 1. 等待TTY设备就绪 -----------------
|
||||||
# 循环等待tty设备就绪(检查设备节点是否存在+是否可读写)
|
# 循环等待tty设备就绪(检查设备节点是否存在+是否可读写)
|
||||||
while true; do
|
while true; do
|
||||||
if [ -c "${TTY_DEVICE}" ] && [ -r "${TTY_DEVICE}" ] && [ -w "${TTY_DEVICE}" ]; then
|
for dev in /dev/ttyACM*; do
|
||||||
echo "[雷达驱动自动切换程序] 设备 ${TTY_DEVICE} 已就绪!" > /dev/kmsg
|
[ -e "$dev" ] || continue
|
||||||
break
|
if [ -c "$dev" ] && [ -r "$dev" ] && [ -w "$dev" ]; then
|
||||||
fi
|
echo "[雷达驱动自动切换程序] 设备 $dev 已就绪!" > /dev/kmsg
|
||||||
|
TTY_DEVICE="$dev"
|
||||||
|
break 2 # 跳出两层循环
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if [ ${MAX_WAIT_SECONDS} -gt 0 ]; then
|
if [ ${MAX_WAIT_SECONDS} -gt 0 ]; then
|
||||||
current_time=$(date +%s)
|
current_time=$(cut -d. -f1 /proc/uptime)
|
||||||
elapsed_seconds=$((current_time - start_time))
|
elapsed_seconds=$((current_time - start_time))
|
||||||
if [ ${elapsed_seconds} -ge ${MAX_WAIT_SECONDS} ]; then
|
if [ ${elapsed_seconds} -ge ${MAX_WAIT_SECONDS} ]; then
|
||||||
echo "[雷达驱动自动切换程序] 错误:等待 ${TTY_DEVICE} 超时(${MAX_WAIT_SECONDS}秒)!" > /dev/kmsg
|
echo "[雷达驱动自动切换程序] 错误:等待 ${TTY_DEVICE} 超时(${MAX_WAIT_SECONDS}秒)!" > /dev/kmsg
|
||||||
|
|||||||
Reference in New Issue
Block a user