完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
状态机可以有效去耦合,只谈GUI的时序也完全无障碍。
状态图: 设计初衷为单状态,因而没有多状态迁移。 事件源有3个:数据更新/超时(时基)/设置包,至于触摸或键盘的输入,我把它作为内部事务,由GUI内部处理。 它响应图中3个事件,进而更新显示界面。 实现说明(细节没有列出):[C] 纯文本查看 复制代码 static QState GUI_Display_GUI(GUI_Display * const me, QEvt const * const e) { switch (e->sig) { case Q_ENTRY_SIG: { /* emWin初始化 */ break; } case DATA_UPDATE_SIG: { /* 更新数据,界面更新驱动 */[C] 纯文本查看 复制代码 } case TIMEOUT_SIG:{ /* 调用GUI运行API */ break; } case SETTING_RCV_SIG: { /* 收到设置包,提取并保存 */ break; } default: { break; } } return status_;}1.入口事件触发初始化; 2.超时事件,最频繁,调用GUI_Exec()/GUI_Scan_Keyboard()等代码作为时基驱动GUI工作,通常为50Hz; 3.数据更新事件,数据由GUI保存,必要时可通过它触发实时界面刷新; 4.设置变更事件,触发非界面产生的配置变更,比如通信接口发来的命令。 总的来说,GUI外部事务非常清楚,可以集中精力于内部代码设计。 |
|
相关推荐
7个回答
|
|
感谢分享,要好好学习学习!
|
|
|
|
先mark-----状态机驱动GUI,学到再研究,谢谢分享
|
|
|
|
|
|
|
|
正是,看来是同道中人。
|
|
|
|
谢谢分享....
|
|
|
|
最近在做单色点阵液晶的界面,用了switch实现,不过修改起来比较麻烦
|
|
|
|
学习一下,状态机是个好东西
|
|
|
|
只有小组成员才能发言,加入小组>>
813 浏览 0 评论
1162 浏览 1 评论
2535 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2719 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1111浏览 3评论
198浏览 2评论
465浏览 2评论
379浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
462浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 20:55 , Processed in 1.310735 second(s), Total 92, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号