利用邮箱实现数据通信
发布日期:2021-07-01 04:27:31
浏览次数:3
分类:技术文章
本文共 2310 字,大约阅读时间需要 7 分钟。
文章目录
1 利用邮箱实现数据通信
问题分析:
解决方案:- 使用邮箱完成数据传递和同步功能。
示例代码:
/** * @brief tOS应用示例 * @details * @author 01课堂 李述铜 http://01ketang.cc * @date 2017-06-01 * @version 1.0 * @copyright 版权所有,禁止用于商业用途 */#include "tinyOS.h"#include "app.h"#include "hal.h"static tTask task1; // 任务1结构static tTask task2; // 任务2结构static tTask task3; // 任务3结构static tTask task4; // 任务4结构static tTaskStack task1Env[TASK1_ENV_SIZE]; // 任务1的堆栈空间static tTaskStack task2Env[TASK2_ENV_SIZE]; // 任务2的堆栈空间static tTaskStack task3Env[TASK3_ENV_SIZE]; // 任务3的堆栈空间static tTaskStack task4Env[TASK4_ENV_SIZE]; // 任务4的堆栈空间int task1Flag; // 用于指示任务运行状态的标志变量int task2Flag; // 用于指示任务运行状态的标志变量int task3Flag; // 用于指示任务运行状态的标志变量int task4Flag; // 用于指示任务运行状态的标志变量void *msgBuffer[10];tMbox mbox;/** * 任务的运行代码 * @param param 任务初始运行参数 */void task1Entry (void *param) { int i = 0; for (i = 0; i < 5; i++) { tMboxNotify(&mbox, (void *) i, tMBOXSendNormal); } tMboxNotify(&mbox, (void *) 6, tMBOXSendFront); for (;;) { task1Flag = 1; tTaskDelay(1); task1Flag = 0; tTaskDelay(1); }}/** * 任务的运行代码 * @param param 任务初始运行参数 */void task2Entry (void *param) { for (;;) { void *msg; tMboxWait(&mbox, &msg, 0); xprintf("msg %d\n", (int) msg); }}/** * 任务的运行代码 * @param param 任务初始运行参数 */void task3Entry (void *param) { for (;;) { task3Flag = 1; tTaskDelay(1); task3Flag = 0; tTaskDelay(1); }}/** * 任务的运行代码 * @param param 任务初始运行参数 */void task4Entry (void *param) { for (;;) { task4Flag = 1; tTaskDelay(1); task4Flag = 0; tTaskDelay(1); }}/** * App的初始化 */void tInitApp (void) { halInit(); tMboxInit(&mbox, msgBuffer, 10); tTaskInit(&task1, task1Entry, (void *) 0x0, TASK1_PRIO, task1Env, sizeof(task1Env)); tTaskInit(&task2, task2Entry, (void *) 0x0, TASK2_PRIO, task2Env, sizeof(task2Env)); tTaskInit(&task3, task3Entry, (void *) 0x0, TASK3_PRIO, task3Env, sizeof(task3Env)); tTaskInit(&task4, task4Entry, (void *) 0x0, TASK4_PRIO, task4Env, sizeof(task4Env));}
典型案例:
-
各个任务通过邮箱向GUI发起绘制请求,由GUI任务最终负责LCD显示的绘制工作。
-
串口中断读取接收到的数据,通过邮箱发送给任务处理。
参考资料:
转载地址:https://muzimin.blog.csdn.net/article/details/105735606 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月09日 07时35分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
数学建模需要的Matlab知识速成,两小时Matlab速成,Matlab小白教程
2021-07-06
逆向工程核心原理笔记(一)——Hello World-2
2021-07-06
逆向工程核心原理笔记(三)——IA-32寄存器
2021-07-06
Ngrok内网穿透教程(国内地址)
2021-07-06
SpringBoot利用AOP防止请求重复提交
2021-07-06
Linux下安装Mysql5..7(Centos7)--亲测
2021-07-06
Linux下安装Nginx(Centos7)
2021-07-06
Linux下安装JDK(Centos7)
2021-07-06
SQL优化--大数据量模糊查询缓慢
2021-07-06
Linux安装Zookeeper(Centos7)
2021-07-06
ACM进阶计划(来自于南阳理工学院)
2021-07-06
Scala学习第八天 Scala主构造器、私有构造器、构造器重载实战详解
2021-07-06
Scala学习第九天 Scala的内部类实战详解
2021-07-06
Scala学习第十天 Scala单例对象、伴生对象实战详解
2021-07-06
Scala学习第十一天 Scala中的apply实战详解
2021-07-06
Scala学习第七天 Scala类的属性和对象私有字段实战详解
2021-07-06
Scala学习第六天 Map、Tuple、Zip实战解析
2021-07-06
Scala学习第四天 Scala的For与Function进阶实战、Lazy的使用
2021-07-06
Scala学习第三天 Tuple、Array、May与文件操作入门实战
2021-07-06