1.消息队列的介绍
使用消息队列可在任务之间传递多条消息。消息队列相当于消息邮箱集合,一个邮箱只能在任务间传递一条消息,而消息队列则可以传递多条消息。消息队列由三部分组成:事件控制块、消息队列和消息。
2.消息队列的操作
a)创建消息队列:QSQCreate(void **start,INT16U size)。start是指针数组的地址,size是数组的长度
b)请求消息队列:
OSQPend(OS_EVENT *pevent,INT16U timeout,INT8U *err)。pevent是所请求的消息队列的指针;timeout是等待时限,err是错误信息。
OSQAccept(OS_EVENT *pevent) 。pevent是所请求的消息队列的指针。
c)向消息队列发送消息:
先进先出的方式:OSQPost(OS_EVENT *pevent,void *msg)。pevent是所请求的消息队列的指针;msg是消息指针
后进先出的方式:OSQPostFront(OS_EVENT *pevent,void *msg)。pevent是所请求的消息队列的指针;msg是消息指针
以广播的方式:OSQPostOpt(OS_EVENT *pevent,void *msg,INT8U opt)。pevent是所请求的消息队列的指针;msg是消息指针,opt是广播选项。如果opt参数的值是“OS_POST_OPT_BROADCAST”,则凡是等待该消息队列的所有任务都会收到消息。
d)清空消息队列:OSQFlush(OS_EVENT *pevent)。pevent是所请求的消息队列的指针
e)删除消息队列:OSQDel(OS_EVENT *pevent)。pevent是所请求的消息队列的指针
f)查询消息队列:OSQQuery(OS_EVENT *pevent,OS_Q_DATA *pdata)。pevent是所请求的消息队列的指针,pdata是存放消息状态的结构。