Previous: 4.2. キューへの追加(後ろへの追加・Blocked状態) |
Up: 4. キュー |
Next: 4.4. 複数の送信用タスクからのデータの受け取り |
サンプルプログラム |
freertos_queue_to_front |
キューは先入れ先出し式のデータ構造なので、データを追加するのは後ろから、データを取り出すのは前からです。もっともFreeRTOSのキューはデータをキューの前に追加することもできます。これにより、キューからデータを受信するタスクに対して、既にキューに入っているデータを追い越して、一定のデータを優先して受け取らせるということができます。
キューの前にデータを送信するにはxQueueSendToFront関数を指定します。
関数名 |
xQueueSendToFront関数 |
|||||
関数プロトタイプ |
portBASE_TYPE xQueueSendToFront ? ( ??? xQueueHandle xQueue, ??? const void * pvItemToQueue, ??? portTickType xTicksToWait ? ); |
|||||
動作 |
キューの先頭にデータを送信します。 |
|||||
引数 |
xQueue |
データの送信先となるキューのハンドラを指定します。 |
||||
pvItemToQueue |
キューに送信するデータをポインタで指定します。 |
|||||
xTicksToWait |
送信先のキューがいっぱいである場合の最大待ち時間を指定します。 |
|||||
戻り値 |
送信結果
|
関数の使用方法自体はxQueueSendToBack関数と同じです。このサンプルプログラムでは、freertos_queue_to_back_pollingと同じ処理の流れで、キューからの受信用関数だけをxQueueSendToFront関数に変更しています。「send data to front」と入力したのですが、データがキューの前に、前にと追加されるので、入力されたデータが1秒毎に順番が逆になっています。
dnesatadnorf ot t |
Previous: 4.2. キューへの追加(後ろへの追加・Blocked状態) |
Up: 4. キュー |
Next: 4.4. 複数の送信用タスクからのデータの受け取り |