# LogMUX **Repository Path**: mingkjl/serial-hub ## Basic Information - **Project Name**: LogMUX - **Description**: LogMUX 是一款功能强大的多路日志聚合与管理工具,支持串口(Serial)和 SEGGER RTT 两种通信方式。它能够同时连接多个设备,实时采集、显示和管理日志数据,是嵌入式开发、硬件调试和系统监控的理想工具。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-24 - **Last Updated**: 2025-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LogMUX
LogMUX Logo **LogMUX - 专业的多路日志聚合工具** [![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Version](https://img.shields.io/badge/version-1.0.0-orange.svg)](https://github.com/yourusername/LogMUX)
## 📖 项目简介 LogMUX 是一款功能强大的多路日志聚合与管理工具,支持串口(Serial)和 SEGGER RTT 两种通信方式。它能够同时连接多个设备,实时采集、显示和管理日志数据,是嵌入式开发、硬件调试和系统监控的理想工具。 ### ✨ 核心特性 - 🔌 **多设备支持**:同时连接和管理多个串口设备或 RTT 设备 - 📊 **实时数据聚合**:所有设备的数据统一显示,支持设备独立标签页 - 🎨 **颜色区分**:自动为不同设备分配颜色,便于识别数据来源 - 💾 **数据保存**:支持保存全部数据或指定设备的数据到文本文件 - ⚡ **快捷指令**:50 个可自定义的快捷指令(10页×5个),支持 ASCII/HEX 模式 - 📝 **指令提示词**:为每个快捷指令添加功能说明,方便记忆和使用 - 🔄 **设备自动检测**:支持 IDN 识别模式和开发模式 - 🔌 **RTT 支持**:完整支持 SEGGER RTT(Real-Time Transfer)通信 - ⚙️ **灵活配置**:波特率、设备别名等配置自动保存 ## 🚀 快速开始 ### 环境要求 - Python 3.10 或更高版本 - Windows 10/11(推荐)或 Linux/macOS ### 安装依赖 ```bash # 克隆项目 git https://gitee.com/mingkjl/serial-hub.git cd serial-hub # 创建虚拟环境(推荐) python -m venv .venv # 激活虚拟环境 # Windows PowerShell: .venv\Scripts\Activate.ps1 # Linux/macOS: source .venv/bin/activate # 安装依赖包 pip install -r requirements.txt ``` ### 运行程序 ```bash python main.py ``` ## 📦 依赖包 ``` PySide6>=6.6.0 # Qt6 图形界面框架 pyserial>=3.5 # 串口通信库 pylink-square>=1.0.0 # SEGGER J-Link 支持(可选,用于 RTT 功能) ``` ## 🎯 主要功能 ### 1. 串口通信 - **设备识别**: - **IDN 模式**:发送 `IDN?` 命令自动识别设备 - **开发模式**:显示所有可用串口 - **数据收发**: - 实时接收并显示串口数据 - 支持 ASCII 和 HEX 两种发送模式 - 可选添加 `\r\n` 结束符 - 支持同时向多个设备发送数据 ### 2. RTT 通信 - 完整支持 SEGGER RTT 协议 - 自动搜索目标设备中的 RTT 控制块 - 支持多个 RTT 通道 - 实时读取 RTT 数据流 - 兼容 J-Link 调试器 ### 3. 数据管理 - **多标签页显示**: - **ALL 标签页**:显示所有设备的数据 - **设备独立标签页**:每个设备有自己的数据窗口 - **数据保存**: - 保存所有设备数据 - 选择性保存多个指定设备数据 - 自动添加时间戳 - 支持分隔符区分不同设备 - **界面控制**: - 滚动到底部 - 清空显示区域 - 时间戳精确到毫秒 ### 4. 快捷指令 - **50 个快捷指令位**:分为 10 页,每页 5 个指令 - **指令配置**: - ASCII/HEX 模式切换 - 结束符开关 - 提示词编辑(描述指令功能) - **可视化提示**: - 指令编号自动顺延(1-50) - 提示词始终显示在输入框左侧 - 有提示词时"?"按钮显示橙色 - **一键发送**:点击发送按钮即可执行指令 - **自动保存**:所有配置自动保存到本地 ### 5. 设备管理 - **设备配置**: - 自定义波特率(串口) - 设备别名设置 - 配置自动保存和恢复 - **连接管理**: - 点击设备切换连接/断开 - 设备掉线自动检测和移除 - 刷新设备列表(保持已连接设备) ## 🖥️ 界面说明 ![LogMUX界面](png/diagram.png) ## ⚙️ 配置文件 配置文件存储在用户目录下的 `.serialhub` 文件夹: **Windows**: `C:\Users\<用户名>\.serialhub\` **Linux/macOS**: `~/.serialhub/` ### 配置文件说明 - **commands.json**:快捷指令配置 ```json [ [ // 第1页 { "text": "IDN?", "mode": "ASCII", "add_ending": true, "tooltip": "查询设备身份" }, // ... 4个指令 ], // ... 共10页 ] ``` - **device_names.json**:设备别名和波特率配置 ```json { "设备ID": { "baudrate": 115200, "nickname": "我的设备" } } ``` ## 🏗️ 项目结构 ``` LogMUX/ ├── main.py # 程序主入口 ├── main_window.py # 主窗口类(UI和业务逻辑) ├── serial_reader.py # 串口数据读取线程 ├── rtt_reader.py # RTT 数据读取线程 ├── device_config_dialog.py # 设备配置对话框 ├── device_selector_dialog.py # JLink 设备选择对话框 ├── rtt_config_dialog.py # RTT 配置对话框 ├── save_dialog.py # 数据保存对话框 ├── logo.png # 应用图标 ├── requirements.txt # 项目依赖 └── README.md # 项目文档 ``` ## 🔧 编译打包 ### 使用 Nuitka(推荐) 需要安装 Visual Studio 或 Build Tools for Visual Studio。 ```bash # 安装 Nuitka pip install nuitka # 编译为独立可执行文件 nuitka --standalone --windows-console-mode=disable --enable-plugin=pyside6 --msvc=latest --windows-icon-from-ico=logo.png --output-dir=dist --output-filename=LogMUX.exe main.py ``` ### 使用 PyInstaller ```bash # 安装 PyInstaller pip install pyinstaller # 打包为单文件 pyinstaller --onefile --windowed --icon=logo.png --name=LogMUX main.py ``` ## 📝 使用场景 - **嵌入式开发**:同时调试多个嵌入式设备 - **硬件测试**:采集多个测试设备的日志 - **生产测试**:批量设备的数据监控 - **系统集成**:多设备系统的联调 - **教学演示**:展示多设备协同工作 - **RTT 调试**:使用 SEGGER RTT 进行实时日志采集 ## 🛠️ 技术栈 - **GUI 框架**:PySide6 (Qt6 for Python) - **串口通信**:pyserial - **RTT 支持**:pylink-square - **多线程**:QThread(每个设备独立线程) - **信号槽机制**:Qt Signal/Slot - **数据存储**:JSON ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 - [PySide6](https://www.qt.io/qt-for-python) - Qt for Python - [pyserial](https://github.com/pyserial/pyserial) - Python Serial Port Extension - [pylink-square](https://github.com/square/pylink) - Python interface for SEGGER J-Link ## 📧 联系方式 如有问题或建议,请通过以下方式联系: - 提交 [Issue](https://github.com/yourusername/LogMUX/issues) - 邮箱:mingjkl@live.com ## 🔄 更新日志 ### v1.0.0 (2025-11-26) - ✨ 初始版本发布 - 🔌 支持串口和 RTT 双通信模式 - 📊 多设备数据聚合显示 - ⚡ 50 个快捷指令 - 💾 数据保存功能 - 📝 指令提示词功能 ---
Made with ❤️ by emmovo