硬汉嵌入式论坛

 找回密码
 立即注册
查看: 15235|回复: 13
收起左侧

[ThreadX全家桶] guix概览

  [复制链接]

11

主题

122

回帖

160

积分

初级会员

积分
160
发表于 2020-8-15 01:38:48 | 显示全部楼层 |阅读模式
看到大家对threadx全家桶兴趣很大,也贡献一点自己的力量。
工作中陆续用到emwin,touchgfx等gui,这些UI组件各有特色,但有些东西是共通的也是核心的内容,比如消息响应机制,比如利用emwin的消息机制就能实现很多手册并不会告诉你的操作,也能很好理解一些问题的原因,典型的如emwin的framewindow定时器设置失效问题,其实不是失效了,而是设置的hwin句柄不对,这里面就涉及到framewindow的结构和消息传递机制了,而理解framewindow结构不同带来的响应差异关键的就在FRAMEWIN__cbClient(){... if (cb) { pMsg->hWin = hParent;(*cb)(pMsg);...} 里的pMsg->hWin = hParent这一句了(具体的可看ucgui的源码)。
除了消息响应机制,另外一个比较重要的就是系统里控件的组织关系,比如链式还是层次式,怎么体现父子关系,这些最直观就体现在触摸点定位到具体控件的过程,如ucgui/emwin是WM_Screen2hWin(),touchgfx是getLastChild(int16_t x, int16_t y, Drawable** last)。
下面简单说下使用这些ui的个人感受吧:
emwin,最大的感觉是使用自由,控件种类多,api完善,可以自由选择,最典型的利用它的2D自绘函数可以自由实现各种效果,字体支持比较好,尤其是外部字库存储这一块。但是不那么现代化,builder功能太弱,对手势事件支持不友好,需要设置各种参数,没有一个好的封装(这一点好像在appward里有改善,新增了封装)。
touchgfx,比较现代化,封装好,编程简单,通过各种性能优化机制,对用户屏蔽了很多细节,特别是事件处理上,对如button控件直接设置用户回调函数即可,view层面的事件只需关注key,click,drug,gesture,tick等事件,非常方便。但过多的封装也让我们想自由发挥也没那么自由,只能依靠好的UI图片设计,没有自由的2D绘制接口(当然实际中有了好的UI基本也不需要去自绘,只是失去了不少乐趣)。
guix,算是两者都有兼顾吧,比如绘图上,既可以2D绘制也可以使用图形化工具设计好的位图,或者两者结合,这个可以使用中体会。它的图形化设计工具确实是做的最好的,不习惯的地方大概就是控件api不多,属性更改基本都是在图形化设计时就配置好的。
个人觉得touchgfx和guix在页面组织形式上是做的比emwin好的,比如touchgfx,一个页面就是一个view,切换页面这个view自动就退出了,guix也是推荐这种形式(gx_widget_attach/gx_widget_detach),一个好处就是根据外部触摸点确定控件时更快,页面逻辑也更情绪。emwin在这一块就比较自由,全靠用户自己掌握。
guix和touchgfx在字体和图片支持上都是采用资源map的形式,使用方便,但是实际使用就会遇到一些问题,比如全字库支持怎么做,如果有很多种语言,那么对可map访问的flash就提出了更高的要求,这个时候是不是使用将生成的bin资源文件放入sd卡等存储,通过文件系统访问更合理呢,有时为了解决问题也必须引入文件系统,比如支持全字库的freetype。这些都要求用户自己去想办法实现。最近研究这些问题的时候有一个有意思的发现,对于lib库通常我们是无法修改的,但是我们可以改lib库的链接符合表啊,比如绘图的划线函数是一个所有控件都会调用的函数,那么我们把链接符号表里的这个函数改名字,而自己另外实现一个同名的函数就可以实现李代桃僵的效果了~

Snipaste_2020-08-15_00-05-33.png
Snipaste_2020-08-15_00-06-49.png
Snipaste_2020-08-15_00-07-13.png
Snipaste_2020-08-15_00-09-01.png

Azure guix.pdf

412.24 KB, 下载次数: 373

评分

参与人数 3金币 +140 收起 理由
kirito + 20 大佬啊
byccc + 20 很给力!
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-8-15 01:48:10 | 显示全部楼层
cool,非常感谢楼主分享。
回复

使用道具 举报

3

主题

36

回帖

45

积分

新手上路

积分
45
发表于 2020-8-15 07:46:41 | 显示全部楼层
优秀的一塌糊涂
回复

使用道具 举报

3

主题

1222

回帖

1231

积分

至尊会员

积分
1231
发表于 2020-8-15 11:12:42 | 显示全部楼层
点赞一个,好文
回复

使用道具 举报

0

主题

24

回帖

24

积分

新手上路

积分
24
发表于 2020-8-15 15:07:04 | 显示全部楼层
非常感谢楼主分享。点赞一个
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-8-16 00:28:07 | 显示全部楼层
老哥 你是用什么画的
回复

使用道具 举报

11

主题

122

回帖

160

积分

初级会员

积分
160
 楼主| 发表于 2020-8-17 10:07:57 | 显示全部楼层
dyhfaily 发表于 2020-8-16 00:28
老哥 你是用什么画的

visio
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2020-8-17 11:58:31 | 显示全部楼层
楼主这个做的很赞
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

3

主题

44

回帖

53

积分

初级会员

积分
53
发表于 2020-8-17 12:17:29 | 显示全部楼层
赞赞,赞,
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2020-8-18 14:51:08 | 显示全部楼层
这份图表对全局认识非常有帮助,太赞了!
回复

使用道具 举报

0

主题

34

回帖

34

积分

新手上路

积分
34
发表于 2020-8-19 10:17:23 | 显示全部楼层
好文,赞个,可惜,哪个gui都还没入门呢
回复

使用道具 举报

23

主题

1403

回帖

1472

积分

至尊会员

积分
1472
发表于 2020-8-27 11:45:31 | 显示全部楼层
好贴,
代码不规范,亲人两行泪!
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2021-4-17 14:43:20 | 显示全部楼层
楼主优秀
回复

使用道具 举报

17

主题

88

回帖

139

积分

初级会员

积分
139
发表于 2021-4-20 20:06:17 | 显示全部楼层
牛啊,把内部结构剖析得那么详细!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 03:00 , Processed in 0.228791 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表