/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}
🔧 FreeHIL Qt6 — 一款值得收藏的开源工业通信调试神器
六大协议一站式调试 | 跨平台 | 高性能 | 开源免费
如果你是一名嵌入式工程师、物联网开发者或工业自动化从业者,日常工作中一定绕不开这些场景:串口调模块、TCP 调网络、HTTP 调接口、MQTT 调消息……通常你需要在不同工具之间来回切换——串口用 SSCOM,网络用网络调试助手,HTTP 用 Postman,MQTT (待开发)用 MQTTX。工具多、切换累、效率低。
FreeHIL Qt6 就是为解决这个痛点而生的。它把六大通信协议集成在一个界面里,用 Qt6 打造,开源免费,开箱即用。
下载路径
📋 目录
- 一、为什么选择 FreeHIL Qt6
- 二、核心功能一览
- 三、30 秒快速上手
- 四、各协议使用详解
- 五、高级功能与调试技巧
- 六、技术架构与性能
- 七、构建与部署
- 八、常见问题 FAQ
- 九、项目信息
一、为什么选择 FreeHIL Qt6
🎯 痛点直击
| 串口、TCP、HTTP、MQTT 各用一个工具 | 一个工具全搞定 |
| 工具风格不一,操作习惯反复切换 | 统一界面,统一交互 |
| 收发数据无日志,出问题难回溯 | 内置日志系统,自动轮转 |
| TCP 服务端调试要额外搭服务 | 内置 TCP/HTTP 服务端,即开即用 |
| 波特率固定选项,非标设备没法调 | 支持手动输入任意波特率 |
✨ 六大亮点
二、核心功能一览
📡 支持的六大协议
┌─────────────────────────────────────────────┐
│ FreeHIL Qt6 │
├──────────┬──────────┬──────────┬───────────┤
│ 串口 │ TCP客户端 │ TCP服务端 │ HTTP客户端│
├──────────┼──────────┼──────────┴───────────┤
│ HTTP服务端│ MQTT │ 日志 / 统计监控 │
└──────────┴──────────┴──────────────────────┘
| 串口通信 | 跨平台、动态端口检测、自定义波特率 | 支持 1~4000000 bps |
| TCP 客户端 | 连接远程服务器、自动重连、Hex/ASCII | 稳定可靠 |
| TCP 服务端 | libevent 高性能、多客户端管理 | ~100 MB/s,5 路并发 |
| HTTP 客户端 | GET/POST/PUT/DELETE、自定义 Header/Body | 请求历史记录 |
| HTTP 服务端 | 支持 HTTP/HTTPS (SSL/TLS) | ~200 MB/s,100 并发 |
| MQTT 客户端 | 发布/订阅、用户名密码认证 | 需 Qt6 Mqtt 模块 |
🎛️ 通用调试功能
- 数据格式:Hex / ASCII 一键切换,收发独立配置
- 自动发送:可设间隔(毫秒级),勾选即启动,适合压力测试
- 追加换行:发送时自动追加 \\r\\n,适配换行协议
- 日志系统:一键开启,自动保存到文件,单文件 40MB 自动轮转
- 统计监控:实时显示发送/接收/错误计数,一目了然
三、30 秒快速上手
方式一:直接运行部署包(零配置)
# 进入部署目录,双击即可运行(已包含所有依赖)
cd deploy/FreeHIL_Qt6
./FreeHIL_Qt6.exe
方式二:Qt Creator 构建(推荐开发者)
1. 启动 Qt Creator
2. 文件 → 打开文件或项目 → 选择 CMakeLists.txt
3. 选择 Kit: Desktop Qt 6.x MinGW 64-bit
4. Ctrl + B 构建 → Ctrl + R 运行
方式三:命令行构建
cd FreeHIL_Qt6_1.0
mkdir build && cd build
# 配置(请替换为你的 Qt 路径)
cmake .. -DCMAKE_PREFIX_PATH="D:/Qt/6.9.1/mingw_64"
# 编译
cmake –build . -j8
# 运行
./FreeHIL_Qt6.exe
💡 提示:项目已内置 libevent 库,无需额外安装。MQTT 功能需通过 Qt Maintenance Tool 安装 Qt6 Mqtt 组件。
四、各协议使用详解
4.1 🔌 串口通信
适用场景:调试传感器、MCU、PLC、RS485 设备等
操作步骤:
- 端口:自动检测可用串口
- 波特率:下拉选择或手动输入自定义值(如 1500000)
- 数据位:5 / 6 / 7 / 8
- 停止位:1 / 2
- 校验位:无 / 奇校验 / 偶校验
🌟 新功能:波特率支持手动输入!内置 1500000、2000000、3000000 等高速率,也可输入任意值(1~4000000),完美适配非标设备。
4.2 🌐 TCP 客户端
适用场景:连接远程服务器、调试自定义 TCP 协议
操作步骤:
4.3 🏭 TCP 服务端
适用场景:模拟服务端、多客户端管理、广播测试
操作步骤:
⚡ 性能:基于 libevent 事件驱动,吞吐量约 100 MB/s,支持 5 路并发客户端。
4.4 📨 HTTP 客户端
适用场景:调试 RESTful API、Web 服务接口
操作步骤:
4.5 🌍 HTTP 服务端
适用场景:模拟 HTTP 服务、接收 Webhook、接口联调
操作步骤:
🔒 支持 HTTPS:配置 SSL 证书即可启用加密通信,吞吐量约 200 MB/s,支持 100 并发。
4.6 📡 MQTT 客户端
适用场景:物联网消息、传感器数据上报、设备控制
操作步骤:
⚠️ 注意:MQTT 功能需要安装 Qt6 Mqtt 模块。通过 Qt Maintenance Tool 勾选安装即可。
五、高级功能与调试技巧
5.1 🔄 Hex / ASCII 模式切换
调试二进制协议时,Hex 模式是刚需:
- 发送区:点击 Hex 按钮,输入十六进制数据(如 48 65 6C 6C 6F)
- 接收区:点击 Hex 按钮,以十六进制显示接收数据
- 两种模式可独立配置,互不影响
5.2 ⏱️ 自动发送(压力测试)
1. 在发送区输入要发送的数据
2. 设置自动发送间隔(毫秒)
3. 勾选「自动发送」复选框
4. 程序按设定间隔自动重复发送
5. 取消勾选即可停止
典型用途:
- 串口每 100ms 发送心跳包
- TCP 每 50ms 发送测试数据流
- 验证设备在高频请求下的稳定性
5.3 📝 日志系统
点击工具栏「保存日志」按钮
→ 日志自动保存到程序运行目录
→ 文件名:FreeHIL_log_yyyyMMdd_HHmmss.txt
→ 单文件最大 40MB,自动轮转为 .bak
日志内容:所有发送/接收数据、连接状态、错误信息,带时间戳,方便事后分析。
5.4 📊 统计监控
界面顶部实时显示三项计数:
- TX:发送数据次数
- RX:接收数据次数
- ERR:错误次数
切换协议时自动重置,聚焦当前协议。
5.5 🔗 追加换行
勾选「追加\\r\\n」后,每次发送自动在末尾添加换行符。适配需要换行结束符的设备协议(如 AT 指令、文本协议)。
六、技术架构与性能
🏗️ 技术栈
| 核心框架 | Qt 6.x | GUI + 网络 + 串口 |
| 语言标准 | C++ 17 | 现代 C++ 特性 |
| 构建系统 | CMake 3.16+ | 跨平台构建 |
| TCP 服务端 | libevent 2.x | 事件驱动高性能 |
| MQTT | Qt6 Mqtt(可选) | 条件编译 |
| 单元测试 | Qt Test | 5 个测试套件 |
📐 架构设计
┌──────────────────────────────────────┐
│ MainWindow (UI) │
├──────────┬──────────┬───────────────┤
│ Protocols│ Slots │ Network │
│ (面板) │ (交互) │ (事件处理) │
├──────────┴──────────┴───────────────┤
│ SerialPort │ TcpServer │ HttpClient │
│ │ │ HttpServer │
└─────────────┴───────────┴────────────┘
模块化设计:MainWindow 按功能域拆分为 6 个文件,每个协议独立封装,职责清晰。
⚡ 性能指标
| 内存占用(空闲) | ~15 MB |
| 启动时间 | < 1 秒 |
| TCP 服务端吞吐量 | ~100 MB/s |
| HTTP 服务端吞吐量 | ~200 MB/s |
| TCP 服务端并发 | 5 客户端 |
| HTTP 服务端并发 | 100 连接 |
| 可执行文件大小 | 1.6 MB |
七、构建与部署
7.1 环境要求
必需:
- Qt 6.x(含 Core、Gui、Widgets、Network、SerialPort)
- CMake 3.16+
- C++17 编译器(GCC / MSVC / MinGW)
可选:
- Qt6 Mqtt 模块(MQTT 功能)
- libevent(项目已内置,Linux 可用系统版本)
7.2 Windows 构建
mkdir build && cd build
cmake .. -G "MinGW Makefiles" \\
-DCMAKE_PREFIX_PATH="D:/Qt/6.9.1/mingw_64" \\
-DCMAKE_CXX_COMPILER="D:/Qt/Tools/mingw1310_64/bin/g++.exe"
cmake –build . -j8
7.3 Linux 构建
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH=/opt/Qt/6.7.0/gcc_arm64
cmake –build . -j$(nproc)
7.4 部署独立包
# Windows:使用 windeployqt 自动打包所有依赖
windeployqt build/FreeHIL_Qt6.exe
# 部署包可直接复制到任意机器运行,无需安装 Qt
7.5 单元测试
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH=<Qt路径> -DBUILD_TESTING=ON
cmake –build . -j8
# 运行全部测试
ctest –output-on-failure
# 测试套件:
# tst_httpclient – HTTP 客户端测试
# tst_httpserver – HTTP 服务端测试
# tst_tcpserver – TCP 服务端测试
# tst_serialport – 串口测试(含自定义波特率)
# tst_mainwindow – 主窗口综合测试
八、常见问题 FAQ
Q1:MQTT 功能不可用?
MQTT 按钮可见但无法连接,是因为 Qt6 Mqtt 模块未安装。
解决:打开 Qt Maintenance Tool → 勾选「Qt Mqtt」组件 → 重新构建项目。
Q2:串口无法打开?
- 关闭其他占用该串口的程序(如 SSCOM、PuTTY)
- Windows 下以管理员身份运行
- 检查串口名称是否正确
Q3:如何使用非标准波特率(如 1500000)?
波特率下拉框支持手动输入。直接在波特率框中输入数值(如 1500000),按回车即可。输入范围 1~4000000。
Q4:运行时提示缺少 DLL?
使用 windeployqt 工具自动部署依赖:
windeployqt FreeHIL_Qt6.exe
Q5:TCP 服务端如何增加并发数?
默认支持 5 个客户端。如需增加,修改 startListening 的第三个参数:
m_tcpServer->startListening("0.0.0.0", 8080, 10); // 改为 10 个
Q6:日志文件在哪?
日志保存在程序运行目录,文件名格式 FreeHIL_log_yyyyMMdd_HHmmss.txt,单文件最大 40MB,自动轮转为 .bak。
九、项目信息
📦 项目地址
- 仓库:https://atomgit.com/cat_lxl/FreeHIL_Qt6_1.0.git
- 分支:main
- 版本:1.0
- 许可证:开源,学习和内部使用
📁 项目结构
FreeHIL_Qt6_1.0/
├── CMakeLists.txt # 构建配置
├── main.cpp # 程序入口
├── mainwindow.h # 主窗口头文件
├── mainwindow_*.cpp # 主窗口模块(6 个)
├── serialport.h/cpp # 串口模块
├── tcpserver.h/cpp # TCP 服务端(libevent)
├── httpclient.h/cpp # HTTP 客户端
├── httpserver.h/cpp # HTTP 服务端
├── mainwindow.ui # 界面设计
├── tests/ # 单元测试(5 个套件)
│ ├── CMakeLists.txt
│ ├── tst_httpclient.cpp
│ ├── tst_httpserver.cpp
│ ├── tst_tcpserver.cpp
│ ├── tst_serialport.cpp
│ └── tst_mainwindow.cpp
├── libevent/ # libevent 库(内置)
└── resources.qrc # 资源文件
📝 版本更新历史
| v1.0 | 初始版本:六大协议、日志、自动发送、Hex/ASCII |
| v1.1 | 修复 19 个 Bug:MQTT 重复定义、空指针崩溃、HTTP 缓冲等 |
| v1.2 | 添加单元测试(5 套件,100% 通过) |
| v1.3 | 自定义波特率:支持手动输入 1~4000000,内置 1500000 等 |
💬 总结
FreeHIL Qt6 是一款为工业通信调试而生的开源工具,核心价值在于:
如果你觉得这个工具对你有帮助,欢迎在 AtomGit 上 Star ⭐ 支持!
有问题或建议,欢迎提 Issue 交流。
作者:cat_lxl 仓库:https://atomgit.com/cat_lxl/FreeHIL_Qt6_1.0.git 技术栈:Qt6 + CMake + libevent + C++17 平台:Windows / Linux 跨平台
如果本文对你有帮助,请点赞 👍 收藏 ⭐ 关注,你的支持是我持续分享的动力!
网硕互联帮助中心




评论前必须登录!
注册