前言

GUI的全称是”Graphical User Interface”,即图形用户界面。它是一种通过图形和视觉元素(如窗口、按钮、菜单等)来与计算机操作系统或应用程序进行交互的界面形式。相比于传统的命令行界面(CLI),GUI提供了更加友好和易于理解的操作方式,使用户能够通过鼠标、键盘或触摸屏等输入设备进行操作。

这个页面的GUI专门指嵌入式GUI(Embedded GUI),是指在嵌入式系统中实现的图形用户界面,而不包括个人电上安装的桌面应用程序。嵌入式GUI广泛应用于工业控制、智能家居、医疗设备、汽车电子等领域的嵌入式系统中,且这一点会随着物联网和智能化趋势的发展而更加明显。

开发感想

尽管我在较早的时候曾使用过PyQT/PySide、AndroidStuido以及HTML等做过一些简单的界面程序(下图左为工作期间做的状态机Demo;右为四足机器人NodeQuad使用的Web控制台),但其实我对嵌入式GUI的接触是比较晚的,而主要原因就是在最早做过的那些项目中均可以不需要界面功能。直到2023年中期,我才真正意义上有去接触嵌入式GUI应用的开发。

图片[1]-嵌入式GUI

从我个人的经验出发,我认为嵌入式GUI开发最先需要理解的基础概念就是驱动和图形库,至于GUI设计、性能优化等则属于锦上添花的内容。在开发GUI应用的过程中可能会接触到不少框架,有些框架可能同时包含驱动和图形库如LVGL,而有些框架则只包含UI控件和功能,如QT。

虽然驱动很重要,但通常我们只需要会用就可以了,不需要自己去造轮子。有时你甚至不需要了解驱动是什么,就可以开发出符合预期的GUI应用。因为框架已经将调用底层驱动的代码封装在较高层的图形API了,而作为应用开发者的我们只需要用这些API就可以了。