# 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 - 专业的多路日志聚合工具**
[](https://www.python.org/downloads/)
[](LICENSE)
[](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. 设备管理
- **设备配置**:
- 自定义波特率(串口)
- 设备别名设置
- 配置自动保存和恢复
- **连接管理**:
- 点击设备切换连接/断开
- 设备掉线自动检测和移除
- 刷新设备列表(保持已连接设备)
## 🖥️ 界面说明

## ⚙️ 配置文件
配置文件存储在用户目录下的 `.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