消息邮箱是一种任务间通信的机制,用起来跟QQ、163的邮箱差不多。
但是CoOS下的消息邮箱只能存放一条消息,是临界资源,所以我这里用了互斥量,以免出错。


最终效果如下图所示:

1、CoCreateMbox(),创建一个消息邮箱。
OS_EventID CoCreateMbox(U8 sortType);
sortType是在多任务中,使用多个消息邮箱时候,内核需要对个消息邮箱进行排序,设为EVENT_SORT_TYPE_FIFO,就是先来先服务;设为EVENT_SORT_TYPE_PRIO,就是按照优先级服务。
2、CoPendMail(),接收邮箱里的消息。
void* CoPendMail(OS_EventID id,U32 timeout,StatusType* perr);
timeout,等待消息的时限。
perr,返回的错误信息。因为C语言的函数无法返回多个变量,所以这里用了指针返回错误信息。
3、CoPostMail(),发送消息到邮箱里面。
StatusType CoPostMail(OS_EventID id,void* pmail);
pmail,就是消息的指针,这里直接使用字符串就可以了。
|