工控 HMI 开发长期两个选择:Qt 功能全但授权风险、体积大;MiniGUI 闭源 / 生态弱;Wayland 架构复杂裁剪困难。
很多低配的工控屏项目并不需要完整 Qt 生态,只需要基础窗口、触控、中文渲染。
TinyPiXOS 是国产开源 GUI 栈,自研 TpWM 窗口管理器,不依赖 X11、Wayland、Qt,纯 C/C++ 实现,基于 Linux framebuffer 运行,Apache2.0 商用友好,面向工控触控设备。
Github:https://github.com/TinyPiXOS/TinyPiXOS
Gitee:https://gitee.com/tinypixos/TinyPiXOS
Apache License 2.0
TinyPiXOS官网:https://www.tinypixos.com/
1. TinyPiXOS介绍
TinyPiXOS简单来说就是:在 Linux 之上用 C/C++ 自建窗口管理 + GUI 框架,不走 X11/Wayland。
TinyPiXOS 分层架构
从上往下看:
应用层:TpDesktop 桌面壳,或你自己写的 GUI 程序
框架层:TpGUI 负责控件和 CSS 样式;TpUtils 封装媒体、网络、GPIO 等系统能力;TpCore 提供信号槽、容器、JSON 等基础能力
系统层:TpWM 做窗口管理;TpService 基于 nanomsg 做进程间通信
渲染:SDL2 + GBM + OpenGL ES/EGL,直接对接 DRM 显示
TinyPiXOS的核心定位在于提供一个独立可控、架构轻量且高度定制化的嵌入式桌面操作系统开发平台。
官方架构图也可以对照看一下:
TpWM
TpWM是 TinyPiXOS 的窗口管理引擎,是 TinyPiXOS 的核心支撑要件。整个引擎设计以精简接口为切入点,摒弃复杂冗余的接口设计理念,结合类似RISC精简指令集的设计思想,为窗口设计人员提供任意组装和拼接的高效途径,可以打造出千变万化的自定义产品。
TpService
TpService 是 TiniPiXOS 框架的后台服务模块,基于 nanomsg 实现高效通信,目前主要提供 进程间通信(IPC) 和 局域网设备间通信 功能,并计划逐步扩展为更强大的系统服务节点。
TpCore
TpCore 库为 TinyPiXOS 应用程序的核心库,提供了信号槽、核心数据结构、文件操作、JSON 处理、泛类型等。
- 统一数据抽象:提供 TpString、TpList、TpHash、TpVector 等作为框架中所有数据操作的通用容器基类,建立统一的数据结构管理体系,确保类型安全与内存效率。高效序列化机制:统一处理二进制与 JSON 格式的数据转换,支持结构体与内存缓冲区的快速互转,适用于高性能数据存储与传输。事件驱动调度:内建信号槽系统,基于观察者模式实现松耦合的组件间通信,支持异步事件传播与回调处理。
TpGUI
TpGUI 库为 TinyPiXOS 应用程序提供了核心 GUI 框架,实现了一个全面的基于小部件的用户界面系统,具有 CSS 样式、事件处理和动画功能。该库是在 TinyPiXOS 平台上构建图形应用程序的基础。
- 统一对象管理:提供TpObject作为框架中所有模块组件的公共基类,建立统一的对象生命周期管理体系,确保资源管理的严谨性。高效事件分发:统一处理和传播用户输入、系统事件。智能内存管理:自动或半自动处理控件内存,降低资源泄漏风险。渲染调度系统:优化绘制流程,协调组件间的渲染顺序与更新,保障界面流畅性。声明式样式定制:内建强大的样式表系统,允许开发者通过声明式配置快速、便捷地定制控件外观和整体界面风格,避免硬编码。
TpUtils
TpUtils 库为 TinyPiXOS 应用程序提供全面的系统级集成功能。该库充当高级应用程序逻辑和低级系统资源之间的桥梁,为媒体处理、网络通信、蓝牙连接、应用程序生命周期管理、硬件监控和设备管理提供标准化接口。
- 统一媒体处理:提供 TpAudioOutput、TpVideoOutput 作为音视频处理的统一抽象层,集成 FFmpeg 编解码能力,支持多格式媒体文件的高效播放与录制。
- 设备管理:通过 TpDiskManage、TpUsbManager 实现热插拔设备的自动检测与挂载,提供设备状态变化的信号驱动通知机制,降低外设管理复杂度。
- 蓝牙协议栈:基于 BlueZ 实现完整的蓝牙设备配对、音频传输与文件交换能力,通过 TpBluetoothLocal、TpBluetoothAudioManager 提供声明式设备管理接口。
- 应用生命周期管理:提供 TpAppInstall、TpAppDopack 实现沙箱化应用安装,支持权限控制、依赖注入与加密签名验证,确保系统安全性。
- 系统资源监控:通过 TpCpuManage、TpMemory、TpDiskManage 实时采集CPU/内存/磁盘 I/O 等系统指标,为性能优化提供数据支撑。显示系统集成:TpDisplay 提供 DPI 缩放计算与 TpWM 窗口管理器的分辨率适配,支持多显示器配置与运行时分辨率切换。
2. TinyPiXOS vs Qt / Wayland
工控 GUI 方案选型,本质是在功能丰富度和资源占用之间做权衡。我们通过一个直观的对比来看三者的差异:
核心维度:
2.1 TinyPiXOS 适合低配设备
TinyPiXOS 做了三个关键减法:
去掉显示服务器层:Qt 和 Wayland 都依赖 X11 或 Wayland Compositor,TinyPiXOS 直接操作 framebuffer,少一层中间商赚差价。
自研精简窗口管理:TpWM 只保留窗口管理的核心功能,没有复杂的多用户、多会话、权限管理等用不到的特性。
按需编译:TpGUI、TpUtils、TpCore 都是模块化设计,不需要的功能直接不编进去。
对于工控小型 HMI、低成本触控屏产品,如果不想引入 Qt 庞大依赖和授权顾虑,TinyPiXOS 是值得调研的国产替代方案。
以上就是本次的介绍,下篇文章我们再一起来实操下。
做工控 HMI 你更倾向 Qt 还是轻量自研 GUI 栈?
320