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是存放訊息狀態的結構。
ucos 訊息佇列
1 訊息佇列 訊息佇列可以同時傳遞多個訊息,當時間控制塊中的變數oseventtype值為 os event type q表示此事件控制塊是用來表示訊息佇列的。訊息佇列資料結構如下 在上面的事件控制塊的oseventptr指標指向了訊息佇列結構體 os q。改結構體os q管理者乙個訊息陣列,這個陣...
ucos訊息佇列
如果把郵箱比作訊號量的公升級版,那訊息佇列就是郵箱的公升級版,郵箱可以實現從乙個任務向另乙個任務傳送乙個指標變數,訊息佇列則可以實現從乙個任務向 另乙個任務傳送多個指標變數,而且每個指標指向的資料結構變數也可以有不同。使用訊息佇列需要注意的恩地方是 乙個任務或者中斷服務子程式可以呼叫osqpost ...
ucos 訊息郵箱
上面的訊息郵箱的建立函式,函式引數為乙個指標,將改變量的位址賦值給oseventptr,故oseventptr中存放的是將要傳遞的訊息的指標。訊息郵箱的oseventtype型別為 os event type mbox。存放訊息就是將訊息的指標賦值給事件控制塊中的oseventptr變數,同時在在有...