реклама на сайте
подробности

 
 
> Как уйти от постоянной проверки условия if?
nikolas_osu
сообщение May 13 2011, 04:17
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 6-12-07
Из: Оренбург
Пользователь №: 33 046



ARM-контроллер опрашивает по циклу некоторый набор блоков, перед началом цикла опроса контроллер получат команду с номерами блоков которые необходимо опрашивать в цикле. Первое что пришло в голову это опросом конкретного блока проверять по if нужно ли опрашивать данный блок. Не нравиться то что в итерациях цикла придется всегда проверять if несмотря на то что во всех итерациях условие будет одинаковым. Возможно ли обойтись без этих проверок для каждого блока в каждой итерации цикла? Язык программирования Си.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smalcom
сообщение May 13 2011, 04:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



вектор функций опроса. тебе как раз приходят индексы функций в векторе.
Go to the top of the page
 
+Quote Post
nikolas_osu
сообщение May 13 2011, 04:57
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 6-12-07
Из: Оренбург
Пользователь №: 33 046



Цитата(smalcom @ May 13 2011, 10:27) *
вектор функций опроса. тебе как раз приходят индексы функций в векторе.

А можно поподробнее как это реализовать?

Цитата
Массив указателей на функции блоков, а лучше массив структур с полем-флагом активности блока.

Будет один цикл с одним условием в теле цикла.
Код
block[0].active = 0;
block[1].active = 1;
....
for (int i=0; i<BLOCKS_QTY; i++)
{
if (block[i].active)
{
block[i].callback();
}
}


Это совсем не то, проверка условия перед запуском опроса конкретного блока как была так и осталась, только добавились еще проверка условия цикла и вызов элемента массива.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 13 2011, 07:24
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(nikolas_osu @ May 13 2011, 07:57) *
А можно поподробнее как это реализовать?

Это совсем не то, проверка условия перед запуском опроса конкретного блока как была так и осталась, только добавились еще проверка условия цикла и вызов элемента массива.


RTOS ваяете?

Номера блоков надо привести к смещению от базы до функции блока. Это делается на промежуточных константных массивах.
Как-то так wink.gif))
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016