先来介绍一下我们的柿饼UI吧 PersimmonUI是以C++编写的,是RT-Thread上一款现代化图形UI库。使用C++是因为GUI上的一系列控件以C++面向对象的方式来描述会更合理。Widget -> 部件,所以也就是一个个对象: 例如一个button,一个label,一个image。每个对象有他们自己的属性,方法等。 当然C++也会带来一些问题,例如原来C中可以任意使用函数指针,但在C++中却并不能随意单独使用类的方法(而需要在类的实例化对象环境中使用其成员方法)。所以这种也诞生了Qt方式的signal/slot模式。因为Qt的起始年代非常久远(Qt诞生于1995年),那个时候一些C++标准并不那么完备,所以QT signal/slot机制是以独立的,额外的moc编译器方式,生成新的C++代码来辅助完成。而PersimmonUI则使用了现代化一些的C++机制,也完成了类似signal/slot机制。 那么PersimmonUI signal/slot机制就是极限了吗?所以也就引出了本系列教程的主角,PersimM。 PersimM本意指的是PersimmonUI Module,即PersimmonUI的模块,甚至有的时候指的是运行PersimmonUI的硬件模块。因为它最初一个定义就是:基于Persim M硬件模块,用户可以非常方便、易用地进行自己的定制开发。 以下是一份PersimmonUI 和 PersimM的对比列表 功能 PersimmonUI PersimM UI展现形式 窗口(Window) 页面(Page) 开发方式 C/C++ UI设计器 + JavaScript 图片格式 BMP, PNG, JPG等 BMP,PNG,JPG等 6 g) q8 S, c$ S7 y+ P6 }字体 点阵字体,TTF字体 点阵字体,TTF字体 画布 以绘图设备方式操作,功能有限 带Alpha,抗锯齿完整画布功能 9 L6 x2 [1 D! p; F+ S+ w动画效果 用户编程实现 设计器携带动画效果选择 窗口/页面动画 用户编程实现 设计器选择切换动画效果 ! j* Y3 M8 s' i3 K8 f. x1 K1 e执行方式 编译、烧写完整固件 USB下载设计资源 3 m8 C+ G. [' N6 y# L" e交互方式 触摸,按键 触摸,按键 ' Q4 Y7 e( u2 t9 Q6 `OTA 功能 用户自行实现 内置OTA升级功能 : | _" T6 v% N7 l8 c" C* QWDT 功能 用户自行实现 内置WDT功能 串口操作 C/C++编程使用 JavaScript 串口操作 文件系统 C/C++编程使用 JavaScript 文件操作 网络操作 socket套接字 提供http、MQTT客户端接口 从上面对比表格,可以非常清晰的发现,PersimM和传统模式已经有一些不一样,主要体现在:
|
引擎开源
嗯呐