完善资料让更多小伙伴认识你,还能领取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实现,不过修改起来比较麻烦
|
|
|
|
学习一下,状态机是个好东西
|
|
|
|
只有小组成员才能发言,加入小组>>
845 浏览 1 评论
2253 浏览 5 评论
2562 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2357 浏览 6 评论
2276 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
420浏览 9评论
424浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
536浏览 6评论
407浏览 5评论
444浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-8 00:20 , Processed in 1.250679 second(s), Total 93, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号