# iot_protocol_toolbox **Repository Path**: road0329/iot_protocol_toolbox ## Basic Information - **Project Name**: iot_protocol_toolbox - **Description**: IoT Protocol Toolbox v4.0 — 即时转换 + 可扩展导航的纯前端协议工具箱 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-06-19 - **Last Updated**: 2026-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IoT Protocol Toolbox(Tauri 2.0 版) > 物联网协议工具箱 — 基于 **Tauri 2.0 + Rust + React** 构建的轻量级跨平台桌面工具 > > 安装包体积小、启动快、原生性能;核心转换逻辑全部在 Rust 侧实现,历史记录与统计本地持久化。 [![Gitee](https://img.shields.io/badge/Gitee-项目地址-red)](https://gitee.com/road0329/iot_protocol_toolbox) [![License](https://img.shields.io/badge/license-MIT-blue)](./LICENSE) [![Tauri](https://img.shields.io/badge/Tauri-2.0-blue)](https://tauri.app) --- ## 简介 本项目由原 **Vite + 原生 JavaScript** 纯网页版(v4)重构为 **Tauri 2.0 + Rust + React** 桌面应用(v5): - 🦀 **Rust 后端**:所有转换/加解密/格式化逻辑通过 `#[tauri::command]` 暴露,原生速度 - ⚛️ **React 前端**:保留原有的「输入即出结果」即时交互与 Linear 风格 UI - 📦 **轻量**:前端 gzip 后约 57 KB,安装包远小于 Electron 方案 - 💾 **本地持久化**:历史记录、使用统计保存在系统应用配置目录(JSON 文件) - 🖥️ **原生能力**:系统剪贴板(arboard)、文件保存对话框(tauri-plugin-dialog)、HTML5 文件拖放 - ⌨️ **键盘友好**:`Ctrl+Enter` 复制结果,`Esc` 关闭弹窗 ## 内置工具 | 工具 | Rust 命令 | 说明 | |------|-----------|------| | **HEX ↔ ASCII** | `hex_ascii` | HEX↔ASCII、紧凑 HEX 加空格、HEX 逐字节转二进制,兼容 Latin-1 / UTF-16 | | **Base64 编解码** | `base64_convert` / `base64_encode_bytes` | 文本 / HEX / 二进制 / 文件(拖放,图片预览) | | **进制转换** | `radix_convert` | 2/8/10/16 进制互转(i128 大整数) | | **DL/T645 协议** | `proto_dlt645` | +33 加密 / −33 解密 / 字节反转 | | **376.1 标识 DA/DT** | `ident_3761` | 数据单元标识 DA↔pn / DT↔Fn(位图信息点/信息类,Q/GDW 376.1 §4.3.4.4) | | **校验/CRC** | `checksum_calc` | CRC16/X.25、CRC16-XMODEM、CRC32、单字节异或、16位2字节CS、DL/T645-07、Q/GDW376.1、IEC62056-21、Intel HEX | | **时间戳** | `timestamp_convert` | 秒/毫秒自适应、本地实时时钟面板、日期互转 | | **字符串处理** | `string_process` | 大小写/反转/加去空格/信息分析 | | **JSON 格式化** | `json_process` | 格式化/压缩/校验/Unicode 转义/字符串转义·反转义/按键排序 + 代码/树形双视图 + 示例/导入/清空 | | **XML 格式化** | `xml_process` | 格式化/压缩/校验/实体转义·反转义(quick-xml 词法分析 + 标签配对校验)+ 双视图 + 示例/导入/清空 | | **AES 加解密** | `aes_process` | ECB/CBC/CFB/OFB/CTR,PKCS7/Zero/NoPadding,128/192/256 位,Text/Hex/Base64 | ## 技术架构 ``` ┌────────────────────────────────────────────────────────┐ │ React 18 前端(Vite 6,端口 1420) │ │ ├─ 侧边导航 / 移动端导航 / 历史记录面板 / 统计弹窗 │ │ ├─ 11 个工具组件(即时转换、模式切换) │ │ ├─ JSON/XML 交互式树形视图 │ │ └─ invoke() ────────────────────────────────┐ │ └──────────────────────────────────────────────┼─────────┘ ▼ ┌────────────────────────────────────────────────────────┐ │ Rust 后端(src-tauri) │ │ ├─ commands/convert.rs 编码/协议/进制/字符串/时间戳 │ │ ├─ commands/crypto.rs AES(RustCrypto aes + 自实现 │ │ │ CBC/CFB/OFB/CTR 工作模式) │ │ ├─ commands/json_xml.rs serde_json / quick-xml │ │ ├─ commands/store.rs 历史记录 + 统计(JSON 持久化) │ │ └─ commands/system.rs 剪贴板(arboard) / 文件保存对话框 │ └────────────────────────────────────────────────────────┘ ``` 数据存储位置:`<系统应用配置目录>/iot-toolbox/`(`history.json`、`stats.json`) ## 开发环境要求 - Node.js ≥ 18 - Rust 工具链(推荐 MSVC;Windows GNU 目标已内置 `.cargo/config.toml` 链接修复) - Windows:WebView2 Runtime(Win11 自带);macOS / Linux 按 Tauri 官方文档配置 ## 快速开始 ```bash # 安装前端依赖 npm install # 开发模式(启动 Vite + 编译 Rust 后端,热更新) npm run tauri:dev # 仅前端调试(浏览器模式,invoke 不可用) npm run dev # 打包生产版本(安装包输出到 src-tauri/target/release/bundle) npm run tauri:build ``` > **Windows 打包说明(GNU 工具链)**:`WebView2Loader.dll` 已置于 `src-tauri/` 并在 > `tauri.conf.json` 的 `bundle.resources` 中声明,NSIS/MSI 会把它安装到 exe 同级目录, > 避免安装后启动报“找不到 WebView2Loader.dll”。该 DLL 与 `webview2-com-sys` 构建脚本生成的 > `target//build/webview2-com-sys-*/out/x64/WebView2Loader.dll` 同源; > 升级 Tauri 后如加载器版本变化,用该文件覆盖 `src-tauri/WebView2Loader.dll` 即可。 ## 项目结构 ``` iot-toolbox/ ├── package.json # 前端依赖与脚本 ├── vite.config.js # Vite(固定 1420 端口) ├── index.html ├── src/ # React 前端 │ ├── main.jsx # 入口 │ ├── App.jsx # 主框架(导航/工具调度/弹窗) │ ├── styles.css # 设计系统(移植自 v4) │ ├── lib/ │ │ ├── ipc.js # Tauri invoke 封装 │ │ ├── registry.js # 工具注册表 │ │ ├── bus.js # 历史记录事件总线 │ │ └── format.js # 时间/大小格式化 + 语法高亮 │ ├── state/toast.jsx # Toast 上下文 │ └── components/ │ ├── Sidebar.jsx / MobileNav.jsx / HistoryPanel.jsx / StatsModal.jsx │ ├── common.jsx # 通用组件与 Hooks │ ├── JsonTree.jsx / XmlTree.jsx │ └── tools/ # 9 个工具组件 └── src-tauri/ # Rust 后端 ├── Cargo.toml ├── tauri.conf.json # Tauri 2.0 配置(dragDropEnabled=false 支持拖放) ├── capabilities/default.json ├── .cargo/config.toml # windows-gnu 链接修复 └── src/ ├── main.rs / lib.rs └── commands/ ├── convert.rs ├── crypto.rs ├── json_xml.rs ├── store.rs └── system.rs ``` ## 与 v4(纯网页版)的对照 | 能力 | v4 纯前端 | v5 Tauri 2.0 | |------|-----------|--------------| | 转换逻辑 | JavaScript | **Rust**(命令式 IPC) | | AES | crypto-js(JS) | **RustCrypto aes + Rust 实现的工作模式** | | JSON/XML | 浏览器 DOM / JS | **serde_json / quick-xml** + React 树视图 | | 历史/统计 | localStorage | **本地 JSON 文件(应用配置目录)** | | 复制 | navigator.clipboard | **arboard 原生剪贴板**(含 Web 回退) | | 文件下载 | Blob + a 标签 | **原生保存对话框** | | 分发 | 静态网页 | Windows/macOS/Linux 原生安装包 | ## 文档 - [UI-Design.md](UI-Design.md) — 界面设计规范(设计令牌、双主题、组件库、交互模型) - [v5.3 对标 MESDebug 自动化测试报告](docs/mesdebug/v53/test-report-v53.md) — 83 条数据驱动用例 + 15 个 Rust 单测 + 20 项接线检查 - [docs/requirements.md](docs/requirements.md) — 需求文档:JSON/XML 格式化对标 bejson.com 的功能对比与 v5.2 增强规划(字符串/实体转义、示例数据、文件导入、清空、XML↔JSON 互转等) ## License MIT