From 92fbd8720775055a6c49f5b18d6c0bdaca349b89 Mon Sep 17 00:00:00 2001 From: Orange <2314753575@qq.com> Date: Thu, 5 Mar 2026 12:25:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A=E5=BC=80=E6=9C=BA=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E6=94=B9=E4=BA=86=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 79 +++++++++++++++++++++++++++++++++++ bashes/radar-driver-switch.sh | 18 ++++---- 2 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..284084b --- /dev/null +++ b/README.md @@ -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`,则说明雷达设备驱动成功 \ No newline at end of file diff --git a/bashes/radar-driver-switch.sh b/bashes/radar-driver-switch.sh index 4faab12..edf5f15 100644 --- a/bashes/radar-driver-switch.sh +++ b/bashes/radar-driver-switch.sh @@ -11,14 +11,14 @@ # 7 - 错误:绑定usb_ch343驱动失败 # 变量设置 -TTY_DEVICE="/dev/ttyACM1" # 替换为你要等待的tty设备路径 +TTY_DEVICE="/dev/ttyACM*" # 替换为你要等待的tty设备路径 CDC_ACM_PATH="/sys/bus/usb/drivers/cdc_acm" USB_CH343_PATH="/sys/bus/usb/drivers/usb_ch343" CHECK_INTERVAL=1 # 检查设备就绪的时间间隔(秒) MAX_WAIT_SECONDS=30 # 最大等待时间(秒),0表示无限等待 # 初始化变量 -start_time=$(date +%s) +start_time=$(cut -d. -f1 /proc/uptime) current_time=0 qinheng_id="" usb_address="" @@ -30,13 +30,17 @@ cdc_acm_sub_addr="" # ----------------- 1. 等待TTY设备就绪 ----------------- # 循环等待tty设备就绪(检查设备节点是否存在+是否可读写) while true; do - if [ -c "${TTY_DEVICE}" ] && [ -r "${TTY_DEVICE}" ] && [ -w "${TTY_DEVICE}" ]; then - echo "[雷达驱动自动切换程序] 设备 ${TTY_DEVICE} 已就绪!" > /dev/kmsg - break - fi + for dev in /dev/ttyACM*; do + [ -e "$dev" ] || continue + if [ -c "$dev" ] && [ -r "$dev" ] && [ -w "$dev" ]; then + echo "[雷达驱动自动切换程序] 设备 $dev 已就绪!" > /dev/kmsg + TTY_DEVICE="$dev" + break 2 # 跳出两层循环 + fi + done if [ ${MAX_WAIT_SECONDS} -gt 0 ]; then - current_time=$(date +%s) + current_time=$(cut -d. -f1 /proc/uptime) elapsed_seconds=$((current_time - start_time)) if [ ${elapsed_seconds} -ge ${MAX_WAIT_SECONDS} ]; then echo "[雷达驱动自动切换程序] 错误:等待 ${TTY_DEVICE} 超时(${MAX_WAIT_SECONDS}秒)!" > /dev/kmsg