欢迎光临
我们一直在努力

FreeHIL Qt6 — 一款值得收藏的开源工业通信调试神器

/* 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

🎯 痛点直击

传统方式FreeHIL Qt6
串口、TCP、HTTP、MQTT 各用一个工具 一个工具全搞定
工具风格不一,操作习惯反复切换 统一界面,统一交互
收发数据无日志,出问题难回溯 内置日志系统,自动轮转
TCP 服务端调试要额外搭服务 内置 TCP/HTTP 服务端,即开即用
波特率固定选项,非标设备没法调 支持手动输入任意波特率

✨ 六大亮点

  • 六协议合一 — 串口 / TCP 客户端 / TCP 服务端 / HTTP 客户端 / HTTP 服务端 / MQTT,一个窗口全搞定
  • 高性能 TCP 服务端 — 基于 libevent 事件驱动,吞吐量 ~100 MB/s,支持多客户端并发
  • 自定义波特率 — 内置 15 档常用波特率(最高 3000000),还支持手动输入任意值,非标设备也能调
  • Hex/ASCII 双模式 — 发送接收均支持十六进制和 ASCII 切换,调试二进制协议无压力
  • 自动发送 + 日志轮转 — 定时发送做压力测试,日志自动保存并轮转,长时间运行不漏数据
  • 跨平台开源 — 基于 Qt6,Windows/Linux 通用,代码开源可定制

  • 二、核心功能一览

    📡 支持的六大协议

    ┌─────────────────────────────────────────────┐
    │ 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 协议

    操作步骤:

  • 点击左侧 「TCP 客户端」
  • 输入服务器 IP 地址 和 端口(1-65535)
  • 点击 「打开」 连接
  • 连接成功后即可收发数据
  • 4.3 🏭 TCP 服务端

    适用场景:模拟服务端、多客户端管理、广播测试

    操作步骤:

  • 点击左侧 「TCP 服务端」
  • 设置监听端口
  • 点击 「打开」 启动监听
  • 客户端连接后,右侧列表实时显示
  • 选中客户端 → 单独发送;不选中 → 广播发送
  • ⚡ 性能:基于 libevent 事件驱动,吞吐量约 100 MB/s,支持 5 路并发客户端。

    4.4 📨 HTTP 客户端

    适用场景:调试 RESTful API、Web 服务接口

    操作步骤:

  • 点击左侧 「HTTP 客户端」
  • 选择请求方法:GET / POST / PUT / DELETE
  • 输入 URL 地址
  • (可选)填写 Headers 和 Body
  • 点击 「发送请求」
  • 响应结果显示在接收区,请求自动存入历史记录
  • 4.5 🌍 HTTP 服务端

    适用场景:模拟 HTTP 服务、接收 Webhook、接口联调

    操作步骤:

  • 点击左侧 「HTTP 服务端」
  • 设置监听端口
  • (可选)勾选 HTTPS,配置证书和私钥路径
  • 点击 「打开」 启动服务
  • 浏览器访问 http://localhost:端口 即可测试
  • 🔒 支持 HTTPS:配置 SSL 证书即可启用加密通信,吞吐量约 200 MB/s,支持 100 并发。

    4.6 📡 MQTT 客户端

    适用场景:物联网消息、传感器数据上报、设备控制

    操作步骤:

  • 点击左侧 「MQTT」
  • 输入 Broker 地址、端口、ClientID
  • (可选)设置用户名、密码
  • 填写订阅 Topic
  • 点击 「连接」 → 自动订阅 Topic
  • 连接成功后可发布消息
  • ⚠️ 注意: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 是一款为工业通信调试而生的开源工具,核心价值在于:

  • 省工具 — 六大协议一个界面,不用再装一堆调试软件
  • 省时间 — 开箱即用,部署包解压即运行
  • 省心 — 日志自动保存、端口自动检测、错误自动统计
  • 够专业 — libevent 高性能、HTTPS 加密、自定义波特率
  • 够开放 — 源码完整、模块清晰、可自行定制
  • 如果你觉得这个工具对你有帮助,欢迎在 AtomGit 上 Star ⭐ 支持!

    有问题或建议,欢迎提 Issue 交流。


    作者:cat_lxl 仓库:https://atomgit.com/cat_lxl/FreeHIL_Qt6_1.0.git 技术栈:Qt6 + CMake + libevent + C++17 平台:Windows / Linux 跨平台

    如果本文对你有帮助,请点赞 👍 收藏 ⭐ 关注,你的支持是我持续分享的动力!

    赞(0)
    未经允许不得转载:171主机测评 » FreeHIL Qt6 — 一款值得收藏的开源工业通信调试神器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址