# SerialTool
**Repository Path**: squne/SerialTool
## Basic Information
- **Project Name**: SerialTool
- **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-06-20
- **Last Updated**: 2026-08-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MobiiotSerial
**基于 Qt5 的跨平台 GUI 串口调试工具**
[](LICENSE)
[]()
[](https://www.qt.io/)
## 概述
MobiiotSerial 是一款跨平台串口调试工具,专为需要与嵌入式设备、单片机及其他串口设备通信的开发者和工程师设计。基于 Qt5 框架构建,提供友好的图形界面用于串口通信测试与调试,支持中英文双语切换。
### 主要功能
- **多标签页架构**:中央标签页同时管理多个串口会话,实时连接状态指示灯
- **会话管理**:创建、编辑、重命名、删除、导入、导出串口会话,配置参数持久化为 JSON
- **ADB 终端**:内置 ADB Shell,支持 Android 设备调试,输出结果实时展示
- **指令面板**:右侧面板提供串口指令和 ADB 指令两个标签页,双击发送、增删改自定义指令,支持导入导出指令列表
- **串口管理**:自动扫描串口,一键连接/断开/暂停
- **双格式收发**:ASCII 与 HEX 两种数据收发模式,发送按钮支持下拉切换
- **DTR/RTS 信号线控制**:在会话配置中设置 DTR(数据终端就绪)和 RTS(请求发送)信号线
- **高级终端模式**:类 PuTTY 的收发一体终端,支持指令历史和上下键回读
- **自动重复发送**:可配置时间间隔的自动发送,支持毫秒级精度
- **快捷发送**:输入框中按回车键即时发送
- **发送后清空**:可选的发送后自动清空输入框
- **数据日志**:支持将通信日志导出保存到文件
- **收发统计**:状态栏实时显示接收/发送字节计数
- **时间戳显示**:可切换显示每条消息的时间戳
- **显示选项**:可独立切换显示发送内容、接收内容和时间戳
- **暂停输出**:临时暂停接收数据显示,不丢失数据
- **自动换行**:接收区域支持自动换行切换
- **多语言**:内置中英文界面切换
- **自定义波特率**:支持自定义波特率输入(最多 7 位数字)
- **串口配置**:可自定义波特率、校验位、停止位、数据位和流控
- **跨平台**:支持 Linux、Windows 和 macOS
### 代码架构
```
main.cpp ── 程序入口,创建 MainWindow
└── mainwindow.h / .cpp ── 主窗口:会话管理、工具栏、菜单、标签页容器
├── sessiondata.h / .cpp ── SessionData 数据结构 + SessionManager(JSON 持久化)
├── sessiondialog.h / .cpp── SessionConfigDialog(单页配置弹窗)
├── serialtab.h / .cpp ── SerialTab(单个串口标签页)
│ └── terminalview.h / .cpp ── TerminalView(类 Putty 收发同屏控件)
├── adbtab.h / .cpp ── AdbTab(ADB Shell 终端标签页)
├── commandmanager.h / .cpp── CommandManager(指令面板 Dock)
└── aboutdialog.h / .cpp ── AboutDialog(关于对话框)
global.h ── 全局枚举:BAUDRATE、DATABIT、STOPBIT、CHECKBIT、CTRLBIT
```
| 文件 | 类/用途 | 被谁调用 | 调用谁 |
|------|---------|----------|--------|
| `main.cpp` | 程序入口 | — | MainWindow |
| `mainwindow.h/cpp` | MainWindow — 主窗口框架 | main.cpp | 所有其他模块 |
| `sessiondata.h/cpp` | SessionData / SessionManager | MainWindow, SessionDialog, SerialTab | global.h |
| `sessiondialog.h/cpp` | SessionConfigDialog | MainWindow | SessionData, global.h |
| `serialtab.h/cpp` | SerialTab — 串口标签页 | MainWindow | TerminalView, SessionData, global.h |
| `terminalview.h/cpp` | TerminalView — 类 Putty 终端控件 | SerialTab | — |
| `adbtab.h/cpp` | AdbTab — ADB 终端标签页 | MainWindow | QProcess |
| `commandmanager.h/cpp` | CommandManager — 指令面板 | MainWindow | QJsonDocument |
| `aboutdialog.h/cpp` | AboutDialog | MainWindow | aboutdialog.ui, global.h |
| `global.h` | 全局枚举 | (被多数文件包含) | — |
## 系统要求
- **操作系统**:Linux (Ubuntu 18.04+, Debian 10+), Windows 7+, macOS 10.12+
- **Qt 框架**:Qt 5.15.2 或更高版本
- **依赖项**:
- Qt5 Widgets, GUI, Core, SerialPort, Network
- 标准 C/C++ 运行时库
- X11 库 (Linux)
## 从源码编译
### 前置条件
- Qt 5.15 或更高版本(含 Qt SerialPort 模块)
- 支持 C++11 的编译器(GCC 4.8+, Clang 3.3+, MSVC 2015+)
- qmake
### Linux (Ubuntu/Debian)
1. **安装 Qt5 开发包:**
```bash
sudo apt-get update
sudo apt-get install qt5-default qtserialport5-dev qttools5-dev-tools build-essential
```
Ubuntu 22.04+(qt5-default 已移除):
```bash
sudo apt-get install qtbase5-dev qtserialport5-dev qttools5-dev-tools build-essential
```
2. **克隆并编译:**
```bash
git clone MobiiotSerial
cd MobiiotSerial
qmake SerialPort.pro
make -j$(nproc)
```
编译产物位于 `Out/MobiiotSerial`。
3. **运行:**
```bash
./Out/MobiiotSerial
```
### Windows
1. **安装 Qt SDK**,从 [qt.io](https://www.qt.io/download) 下载,安装时确保选择 Qt SerialPort 模块。
2. **使用 Qt Creator 编译:**
- 在 Qt Creator 中打开 `SerialPort.pro`
- 选择编译套件(MinGW 或 MSVC)
- 点击构建并运行
3. **命令行编译(MinGW):**
```cmd
qmake SerialPort.pro
mingw32-make
```
4. **部署依赖:**
使用 `windeployqt` 收集所需的 DLL:
```cmd
windeployqt --serialport Out\MobiiotSerial.exe
```
### macOS
1. **通过 Homebrew 安装 Qt:**
```bash
brew install qt@5
export PATH="/usr/local/opt/qt@5/bin:$PATH"
```
2. **编译:**
```bash
git clone MobiiotSerial
cd MobiiotSerial
qmake SerialPort.pro
make -j$(sysctl -n hw.ncpu)
```
3. **部署依赖(可选):**
```bash
macdeployqt MobiiotSerial.app
```
4. **运行:**
```bash
open MobiiotSerial.app
```
## Linux 打包(Debian/Ubuntu)
MobiiotSerial 在 `deb_prj/` 目录下包含完整的 Debian 打包结构。构建 `.deb` 包的步骤:
1. **先编译二进制文件**(参见上方的 Linux 编译说明)。
2. **将二进制文件复制到打包结构中:**
```bash
cp Out/MobiiotSerial deb_prj/opt/MobiiotSerial/
```
3. **收集共享库**(如需打包依赖):
```bash
cd script
chmod +x ldd.sh
./ldd.sh ../Out/MobiiotSerial
cp ../lib/* ../deb_prj/opt/MobiiotSerial/lib/
cd ..
```
4. **构建 .deb 包:**
```bash
chmod +x gen_deb.sh
./gen_deb.sh
```
5. **安装:**
```bash
sudo dpkg -i MobiiotSerial.deb
# 如有依赖问题:
sudo apt-get install -f
```
## 运行方式
安装或编译完成后:
1. **命令行启动:**
```bash
mobiiotserial
```
2. **应用菜单启动:**
在系统应用菜单中找到 "MobiiotSerial"。
3. **串口权限(Linux):**
如果遇到权限拒绝错误,将用户添加到 `dialout` 组:
```bash
sudo usermod -a -G dialout $USER
```
注销后重新登录使更改生效。
## 使用指南
### 基本操作
1. **会话管理**:左侧会话面板可新建、编辑、重命名、删除会话,右键列表项弹出操作菜单
2. **配置**:通过会话向导设置串口号、波特率、数据位、停止位、校验位和流控
3. **连接**:点击工具栏"开始"按钮建立连接(再点击可暂停/继续,"停止"完全断开)
4. **发送数据**:
- 在输入框中输入数据
- 通过发送按钮下拉菜单选择 ASCII 或 HEX 格式
- 点击"发送"或按 **回车键** 发送
- 可勾选"发送后清空"自动清空输入框
5. **接收**:数据自动显示在接收区域,状态栏实时更新收发字节数
6. **保存日志**:文件 > 保存日志文件,导出通信日志
### 高级功能
- **自动重复发送**:勾选"重发"并设置时间间隔(毫秒),自动定时发送
- **显示选项**:工具栏可独立切换 HEX 接收、显示发送、时间戳、自动换行
- **暂停输出**:点击暂停按钮临时停止显示而不中断数据接收
- **自定义波特率**:在会话向导波特率下拉框中选择"自定义",输入数值(1-7 位数字)
- **语言切换**:菜单 > 关于中切换界面语言(中文/英文)
- **接收格式**:工具栏支持 HEX/ASCII 接收格式一键切换
## 常见问题
**问:应用程序无法启动**
- 确保已安装所有 Qt5 依赖项
- Linux 下检查文件权限:`chmod +x MobiiotSerial`
**问:找不到串口**
- 点击"扫描串口"刷新串口列表
- 检查串口权限(参见上方的"串口权限"部分)
**问:打开串口时权限被拒绝**
- Linux 下将用户添加到 `dialout` 组,或使用 `sudo` 运行
- 确保没有其他应用程序正在使用该串口
**问:Linux 上存在依赖问题**
- dpkg 安装后运行 `sudo apt-get install -f`
- 或使用 `sudo apt-get install ./mobiiotserial.deb` 自动解决依赖
## 待办事项
- [ ] 数据可视化与波形绘制
## 许可证
本项目基于 Mozilla Public License 2.0 (MPL-2.0) 许可。详情参见 [LICENSE](LICENSE) 文件。
## 作者
- 邮箱:Squne@live.com
---