查看: 2417|回复: 0

[经验] 实战入门RT-Thread柿饼UI

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-6-16 17:33:34 | 显示全部楼层 |阅读模式
    分享到:
    先来介绍一下我们的柿饼UI吧
    PersimmonUI是以C++编写的,是RT-Thread上一款现代化图形UI库。使用C++是因为GUI上的一系列控件以C++面向对象的方式来描述会更合理。Widget -> 部件,所以也就是一个个对象:

    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等

    字体
    点阵字体,TTF字体
    点阵字体,TTF字体

    画布
    以绘图设备方式操作,功能有限
    带Alpha,抗锯齿完整画布功能

    动画效果
    用户编程实现
    设计器携带动画效果选择

    窗口/页面动画
    用户编程实现
    设计器选择切换动画效果

    执行方式
    编译、烧写完整固件
    USB下载设计资源

    交互方式
    触摸,按键
    触摸,按键

    OTA 功能
    用户自行实现
    内置OTA升级功能

    WDT 功能
    用户自行实现
    内置WDT功能

    串口操作
    C/C++编程使用
    JavaScript 串口操作

    文件系统
    C/C++编程使用
    JavaScript 文件操作

    网络操作
    socket套接字
    提供http、MQTT客户端接口
    从上面对比表格,可以非常清晰的发现,PersimM和传统模式已经有一些不一样,主要体现在:
    • 有UI设计工具,用于界面设计;
    • 编程方式不再是传统的C/C++模式,而是可以简单上手的JavaScript模式,美工+前端模式;
    • 整体是一体化的东西,例如OTA、WDT等这些功能都默认内置。


    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-13 10:40 , Processed in 0.111785 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.