Available Languages?:

OSA : OS_Queue_Send_TO

OS_Queue_Send_TO (queue, message, timeout)
OS_Queue_Send_I (queue, message, timeout)

Разрешен вызов только в контексте задачиПереключает контекстСервис использует таймаут

Отправляем сообщение с содержимым message в очередь queue. Если очередь переполнена, то в течение заданного времени ждем, когда появится свободное место. Если так и не дождались, то выходим из ожидания по таймауту.

Для использования очередей сообщений в файле OSAcfg.h должна быть определена константа OS_ENABLE_QUEUE.

Для PIC16 переменная queue может размещаться в памяти только в bank0 или bank1

Разрешен вызов:

Только из задачи

Параметры функции:

queue Дескриптор очереди сообщений. Переменная типа OST_QUEUE.
message указатель на тело сообщения (тип OST_MSG)
timeout Время ожидания. Задается в системных тиках - периодах вызова сервиса OS_Timer

Возвращаемое значение:

таймаут Если вышли из ожидания по таймауту, то сервис OS_IsTimeout возвратит true

Пример вызова:

OST_QUEUE queue;
 
void Task (void)
{
    static char Data[5];
    for (;;) {
        /*...*/
        // В течение 100 тиков пытаемся отправить сообщение в очередь.
        OS_Queue_Send_TO (queue, Data, 100);
        if (OS_IsTimeout()) {
            // Сообщение не отправлено
            /*...*/
        }
        /*...*/
    }
}

Old style name

OS_SendQMsgTimeout

См. также

 
osa/ref/allservices/os_queue_send_to.txt · Последние изменения: 07.10.2010 13:53 (внешнее изменение)
 
Creative Commons License Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki