Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет51/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   47   48   49   50   51   52   53   54   ...   129
Kurniz

xQueueReceive(). Ее прототип:
portBASE_TYPE xQueueReceive(
xQueueHandle 
xQueue,
const void * pvBuffer,
portTickType 
xTicksToWait);
Для считывания элемента из очереди без 
его удаления используется API-функция 
xQueuePeek(). Ее прототип:
portBASE_TYPE xQueuePeek(
xQueueHandle 
xQueue,
const void * pvBuffer,
portTickType 
xTicksToWait);
Назначение параметров и возвращаемое 
значение для API-функций xQueueReceive() 
и xQueuePeek() одинаковы:
xQueue
• 
дескриптор очереди, из которой 
будет прочитан элемент. Дескриптор оче-
реди может быть получен при ее создании 
API-функцией xQueueCreate().
pvBuffer
• 
— указатель на область памя-
ти, в которую будет скопирован элемент 
из очереди. Объем памяти, на которую 
ссылается указатель, должен быть не мень-
ше размера одного элемента очереди.
xTicksToWait
• 
максимальное количе-
ство квантов времени, в течение которого 
задача может пребывать в блокирован-
ном состоянии, если очередь не содержит 
ни одного элемента. Для представления вре-
мени в миллисекундах следует использо-
вать макроопределение portTICK_RATE_MS 
[1, КиТ № 4]. Задание xTicksToWait равным 
«0» приведет к тому, что задача не перейдет 
в блокированное состояние, а продолжит 
свое выполнение, если очередь в данный 
момент пуста. Установка xTicksToWait рав-
ным константе portMAX_DELAY приведет 
к тому, что выхода из блокированного со-
стояния по истечении тайм-аута не будет. 
Задача будет сколь угодно долго «ожидать» 
появления элемента в очереди. При этом 
макроопределение INCLUDE_vTaskSuspend 
в файле FreeRTOSConfig.h должно быть 
равно «1».
Возвращаемое значение — может возвра-
• 
щать 2 значения:
pdPASS — означает, что данные успешно 
прочитаны из очереди. Если определена 
продолжительность тайм-аута (пара-
метр xTicksToWait не равен «0»), то воз-
врат значения pdPASS говорит о том, что 
элемент в очереди появился (или уже 
был там) до истечения тайм-аута и был 
успешно прочитан.
errQUEUE_EMPTY — означает, что 
элемент не прочитан из очереди, так 
как очередь пуста. Если определена 
продолжительность тайм-аута (пара-
метр xTicksToWait не равен «0» или 


Достарыңызбен бөлісу:
1   ...   47   48   49   50   51   52   53   54   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет