# JLDevTools **Repository Path**: char-x/jldev-tools ## Basic Information - **Project Name**: JLDevTools - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-02 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SelfTools ## Scripts ### `buildEnvUp.ps1` — 环境配置与文件选择器 自动配置开发环境变量,并从指定目录中选择 KEY 文件。 #### 功能 1. 将 `tools\utils` 目录追加到 `PATH` 环境变量 2. 扫描 `D:\Workspace\JL\KEY` 目录下的所有文件 3. 交互式选择文件,设置 `KEY_FILE_PATH` 环境变量 4. 将配置保存到 `.env` 文件 #### 使用方法 ```powershell .\buildEnvUp.ps1 ``` #### 交互选项 | 输入 | 行为 | |------|------| | `1` ~ `N` | 选择对应序号的文件,设置 `KEY_FILE_PATH` 环境变量 | | `N` / `n` | 选择 None,不设置 `KEY_FILE_PATH` 环境变量 | | `0` | 退出脚本 | #### 输出示例 ``` [OK] PATH updated: D:\Workspace\SelfTools\tools\utils [FILES] Found 3 files in D:\Workspace\JL\KEY: ---------------------------------------- [1] key_a.dat [2] key_b.dat [3] key_c.dat [N] None (no KEY_FILE_PATH) ---------------------------------------- Select file number (1-3), N for None, or 0 to exit: 2 [OK] KEY_FILE_PATH = D:\Workspace\JL\KEY\key_b.dat [OK] Saved to .env file [ENV] Current variables: KEY_FILE_PATH = D:\Workspace\JL\KEY\key_b.dat ``` #### 生成的 `.env` 文件 选择文件时: ``` PATH_EXTRA=D:\Workspace\SelfTools\tools\utils KEY_FILE_PATH=D:\Workspace\JL\KEY\key_b.dat ``` 选择 None 时: ``` PATH_EXTRA=D:\Workspace\SelfTools\tools\utils ``` --- ### `append_log.ps1` — 蓝牙日志追加工具 向日志文件追加带时间戳的记录,并在检测到异常蓝牙断开时弹出系统通知。 #### 功能 1. 向指定文件追加 `[HH:mm:ss.fff] <文本>` 格式的日志行 2. 自动检测 `HCI_EVENT_DISCONNECTION_COMPLETE` 事件 3. 当断开原因码不是 `0x13`(超时)或 `0x10`(远程关闭)时,弹出系统托盘警告通知 #### 使用方法 ```powershell .\append_log.ps1 -Text "日志内容" -File "log.txt" ``` #### 参数 | 参数 | 类型 | 说明 | |------|------|------| | `-Text` | string | 要追加的日志文本 | | `-File` | string | 目标日志文件路径 | #### 示例 ```powershell # 追加普通日志 .\append_log.ps1 -Text "Device connected" -File "bt_log.txt" # 追加断开事件(正常断开,不弹通知) .\append_log.ps1 -Text "HCI_EVENT_DISCONNECTION_COMPLETE:0,13" -File "bt_log.txt" # 追加断开事件(异常断开,弹出警告通知) .\append_log.ps1 -Text "HCI_EVENT_DISCONNECTION_COMPLETE:0,02" -File "bt_log.txt" ``` #### 日志格式 ``` [14:23:01.456] Device connected [14:25:33.120] HCI_EVENT_DISCONNECTION_COMPLETE:0,02 ``` #### 异常断开判定 当日志文本匹配 `HCI_EVENT_DISCONNECTION_COMPLETE:,` 时: | 原因码 | 含义 | 是否通知 | |--------|------|----------| | `13` | 连接超时 | 否 | | `10` | 远程设备关闭连接 | 否 | | 其他 | 异常断开 | 是(弹出系统托盘警告) | --- ### `plot-server.exe` — 实时绘图服务器 基于 Rust + egui 的 UDP 实时数据绘图工具。打开后监听 UDP 端口 9001,接收数据并动态绘制时间序列图。 #### 功能 1. 监听 UDP 端口 9001,接收 `name,[hh:mm:ss.xxx],value` 格式数据 2. 动态识别 data_name,自动分配颜色和图例 3. 横轴为时间,纵轴为 value,自动缩放 4. 支持鼠标滚轮缩放、Shift+滚轮缩放时间轴、拖拽平移 5. 键盘 +/- 缩放(步进 = 鼠标滚轮的 2 倍),R 重置视图,Space 暂停/恢复自动滚动 6. 鼠标悬停显示十字线和坐标值 7. 新数据超出横轴时自动前移窗口 8. SaveTo CSV 按钮导出所有数据 #### 使用方法 ```powershell # 启动服务器(默认端口 9001) .\plot-server.exe # 指定端口 .\plot-server.exe --port 9002 ``` #### 交互控制 | 操作 | 行为 | |------|------| | 鼠标滚轮 | 缩放双轴 | | Shift + 滚轮 | 仅缩放时间轴 | | 拖拽 | 平移视图 | | `+` / `-` | 缩放时间轴(步进 ×2) | | `R` | 重置视图 | | `Space` | 暂停/恢复自动滚动 | #### 数据协议 - **传输**: UDP,默认端口 9001 - **格式**: `data_name,[hh:mm:ss.xxx],value`(一行一条,UDP datagram) - **示例**: `temperature,[14:23:01.456],23.5` #### CSV 导出格式 点击界面左侧 "💾 SaveTo CSV" 按钮,导出文件默认命名为 `YYYYMMDD_HHMMSS_plot.csv`: ```csv point_num,cpu_Timestamp,cpu_Value,mem_Timestamp,mem_Value 1,14:23:01.456,55.300000,14:23:01.456,1024.000000 2,14:23:01.467,56.100000,14:23:01.470,1025.500000 3,14:23:01.478,54.800000,, ← 点数不足的 series 对应列为空 ``` --- ### `plot-client.exe` — 绘图数据发送客户端 Rust 原生编译的轻量 UDP 客户端,专为高频短生命周期调用设计(~15ms/次)。 #### 功能 1. 两种发送模式:直接传值 / 正则提取 2. 支持 Float 和 HEX 格式解析 3. 支持 `-Text` 参数直接传文本或管道输入 4. 支持自定义服务器地址和端口 #### 使用方法 ```powershell # 直接传值 .\plot-client.exe -Name "cpu" -Value 55.3 # 正则提取(文本通过 -Text 参数) .\plot-client.exe -Name "cpu" -Regex "usage:\s*(\d+\.\d+)%" -Text "CPU usage: 45.2%" # 十六进制提取 .\plot-client.exe -Name "reg" -Regex "reg=(0x[0-9A-Fa-f]+)" -Format HEX -Text "reg=0xDEAD" # 管道输入 "CPU usage: 45.2%" | .\plot-client.exe -Name "cpu" -Regex "usage:\s*(\d+\.\d+)%" # 指定服务器 .\plot-client.exe -Name "cpu" -Value 55.3 -Host "192.168.1.100" -Port 9001 ``` #### 参数 | 参数 | 类型 | 说明 | |------|------|------| | `-Name` | string | 数据系列名称(必填) | | `-Value` | number | 直接数值(与 -Regex 互斥) | | `-Regex` | string | 含一个捕获组的正则表达式 | | `-Text` | string | 待匹配的文本(与管道二选一) | | `-Format` | string | 捕获组类型:`Float`(默认)或 `HEX` | | `-Host` | string | 服务器 IP(默认 127.0.0.1) | | `-Port` | int | UDP 端口(默认 9001) | | `-Help` | switch | 显示帮助 | #### 典型工作流 ``` 日志工具/调试脚本 → plot-client.exe → UDP → plot-server.exe → 实时绘图 (每次捕获) (~15ms) (无连接) (常驻) ``` #### 性能 | 指标 | 值 | |------|-----| | 单次调用(含进程创建) | ~15ms | | 纯 UDP 发送(进程内) | < 0.1ms | | 支持调用频率 | ≤ 60 次/秒 | #### 源码编译 ```powershell # 客户端 cd plot-client-rs cargo build --release # 输出: target/release/plot-client.exe # 服务器 cd plot-server cargo build --release # 输出: target/release/plot-server.exe ```