osal_msg_send 以及OSAL消息发送示例
来源:互联网 发布:linux查询逻辑cpu个数 编辑:程序博客网 时间:2024/05/17 22:52
一、用于发送消息的函数为osal_msg_send
原型:OSAL.c中
uint8 osal_msg_send( uint8 destination_task, uint8 *msg_ptr );
参数destination_task为要接收此Message的目标任务ID,msg_ptr 为所要发送的消息Message指针。
uint8 osal_msg_send( uint8 destination_task, uint8 *msg_ptr )
{
}
发送Message,此OS做了两件事:
1,将此Message加入“消息队列”
2,设置系统消息事件,等待目标任务响应:osal_set_event( destination_task, SYS_EVENT_MSG );
但是为了了代码的可靠性,在此之前加入了判断目标任务ID以及Message的合法性的语句。
二,如何向SampleApp_ProcessEvent发送与接收消息?
简单示例:通过按键事件(即在处理所有按键事件的case下面),向SampleApp_ProcessEvent中发送自定义的LED闪烁的Message。
准备工作与步骤如下:
Message定义。
在ZComDef.h中定义了系统用到的Message的宏定义,如
#define
#define AF_INCOMING_MSG_CMD
注意下面一条注释:
// OSAL System Message IDs/Events Reserved for applications (user applications)
// 0xE0 – 0xFC
所以应用程序定义的Message只能从0xE0 – 0xFC
因此:
1、在注释下面定一条Message 宏定义偏移量:
#define __MSG_OFFSET
2、如果自定的Message中只在SampleApp中使用,则在SampleApp.h中定义,否则应在ZComDef.h中
2.1在SampleApp.h中定义
#define MYMSG_LED_BLIND
2.2自定义消息的格式结构体,用于消息的发送,以及携带数据,在定义的头文件在2.1节中
3、在SampleApp_ProcessEvent函数中的switch ( MSGpkt->hdr.event )下添加一条case-break语句
switch ( MSGpkt->hdr.event )
...
case
...
然后在case KEY_CHANGE:下添加一条发送MYMSG_LED_BLIND闪烁的Message,在发送消息前要定义一个消息指针,并且使用osal_msg_allocate为指针分配内存
...
case KEY_CHANGE:
- osal_msg_send 以及OSAL消息发送示例
- osal_msg_send 以及OSAL消息发送示例
- OSAL osal_msg_send解读
- OSAL消息机制及使用示例
- osal_msg_send
- gearman消息发送示例
- OSAL之消息管理
- Udp消息发送接收示例
- Zstack协议栈OSAL中添加任务事件消息、发送数据详细过程
- OSAL消息相关函数介绍
- 模拟发送鼠标消息示例代码
- scala发送消息到kafka示例
- 利用Kafka发送/消费消息-Java示例
- nifi发送消息到Kafka--示例
- 跨进程消息以及数据发送
- RTX发送消息提醒实现以及注意事项
- 进程间的通信以及发送消息
- 消息队列创建以及使用示例
- Go语言基础:Interface
- 字典序问题(排列组合)
- Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
- samba引起的问题
- Java笔记 - final
- osal_msg_send 以及OSAL消息发送示例
- JAVA入门.零基础学Java语言 MOOC 第三周 循环 ; 第4周 循环控制
- [LeetCode268]Missing Number
- QQ留言板
- warning: the frame size of 1040 bytes is larger than 1024 bytes
- 参加工信部人才中心的“嵌入式系统软硬件设计方法和工具”培训感想
- socket和tcpip关系,再解析socket函数
- Ubuntu 安装mysql
- 重载、重写、抽象类、接口