abivan (21.12.2011 16:34, просмотров: 490) ответил MegaJohn на правильное использование RTOS - научите уму разуму
1. Задача М(модем) имеет очередь сообщений она ничего не должна проверять переодически, только обрабатывать приходящие сообщения. и отправлять сообщения в случае "плохих" ответов.
2. Задача U(UART) занимается приемом передачей данных. Принятые данные отправляется сообщением задаче М.
3. Задача П решила что надо отправить СМС, через передачу сообщений отправляет задаче M команду.
задача М не ставит ни каких признаков а работает с очередью сообщений. Если нужно оповещать о резулбтате, то задача П должна иметь очередь сообщений от 1(если запрос -ответ) до ....(при серии запросов.
Сообщение в М можно организовать разными способами. Используя блоки памяти(я не использую) или использовать DMS(самописный аналог встроенного malloc, но безопасный. Это отдельная тема) сообщение упаковать в структуру если надо
типа:
typedef struct{
BYTE bSource; //bCommand
t_MyType Date;
}t_ModemMsg;
ответ от модема можно формировать или отдельно или отправлять сообщение назад с признаком выполнения. И память освобождать в задаче память выделяющей. можно не отправлять сообщения от М к П в случае успешной работы М тогда память освободить в М, а в П ничего не отправлять.
Про работу с памятью это отдельная тема, если интересно можно продолжить отдельно.