当前位置: 首页 > news >正文

实习技能记录【5】-----项目中消息传递到ui层的方法

代码

while (1){osEvent evt;evt = osMailGet(ui_msg_mailbox, 0);if (evt.status == osEventMail){UI_MSG_APP_T *msg = (UI_MSG_APP_T *)evt.value.p;if (msg->cmd_type == CMD_TYPE_INNER){if (msg->cmd_code == CMD_CODE_INNER_REFRESH_NOW){lv_obj_invalidate(lv_scr_act());}}else{screen_receive_msg(msg);}ui_msg_mailbox_free(msg);}

UI线程通过消息邮箱(osMailGet(ui_msg_mailbox, 0);)非阻塞的获取到来自底层的消息
并在screen_receive_msg进一步进行消息分发

这里使用虽然的是FreeRTOS,但是osMailGet不是通用的FreeRTOS函数,是CMSIS-RTOS的接口。底层实现的原理实际上就是freeRTOS的队列。

消息分发

进入ui层之后,实际上就是通过判断当前活动的屏幕,然后把消息传入对应的屏幕对象中。

相关文章:

  • Knife4j 接口文档添加登录验证流程分析
  • 如何防止 ES 被 Linux OOM Killer 杀掉
  • C++日更八股--first
  • 狼人杀中的智能策略:解析AI如何理解复杂社交游戏
  • 代码随想录算法训练营 Day35 动态规划Ⅲ 0-1背包问题
  • docker学习笔记6-安装wordpress
  • 海外社交App用户留存秘籍:构建高粘性社区的算法与运营实战
  • 是否想要一个桌面哆啦A梦的宠物
  • ptpx常用操作
  • Windows系统下,导入运行 RuoYi-Vue3 项目
  • 解决ktransformers v0.3 docker镜像中 operator torchvision::nms does not exist 问题
  • mongoose插入文档,字段类型, 字段验证, 删除文档,更新文档,读取文档,查询文档的条件控制 ,字段筛选,数据排序,数据截取
  • C语言教程(二十四):C 语言中递归的详解
  • Alibaba第四版JDK源码学习笔记2025首次开源
  • C++搞定周岁.虚岁计算
  • 一页概览:统一数据保护方案
  • 【系统参数合法性校验】spring-boot-starter-validation
  • 前端Vue3 + 后端Spring Boot,前端取消请求后端处理逻辑分析
  • 【MySQL】(9) 视图
  • 跟我学C++中级篇——控制死锁
  • 美的集团一季度净利增长38%,库卡中国机器人接单增超35%
  • 浙江官宣:五一假期,没电、没气、没油车辆全部免费拖离高速
  • 成都世运会倒计时100天,中国代表团运动员规模将创新高
  • 习近平访问金砖国家新开发银行
  • 西班牙遭遇史上最严重停电,已进入国家紧急状态
  • 监狱法修订草案提请全国人大常委会会议审议