Вывод данных однократно в цикле while(1)

Рейтинг: 0Ответов: 1Опубликовано: 30.10.2014

Столкнулся с такой нелепой проблемой и не могу понять, как ее решить.

Пишу программку под МК (но это имеет мало значения, проблема чисто программная) на чистом СИ. Главное условие, что есть процедура инициализации void main (void), и в ней обязательно должен быть цикл while(1), то есть бесконечный без условия.

Есть функция считывания данных, по которым должна идти отправка (вывод) - read_adc и putsf("oo").

Логика такая:

while(1) {
if (read_adc() > 700) {
putsf("oo");
} else {
putsf("");
}
}

Так вот сейчас, когда read_adc() > 700, он выводит putsf("oo") до тех пор, пока она больше 700, ну, в принципе так и должно быть.

Вопрос в том, как сделать, чтобы putsf("oo") вывелось однократно, а затем, когда оно снова станет меньше 700 и потом больше, снова один раз.

Ответы

▲ 1

Проблема действительно какая-то нелепая.

bool printed = false;
while(1) {
  if (read_adc() > 700) {
    if (!printed) {
      putsf("oo");
      printed = true;
    }
  } else {
    putsf("");
    printed = false;
  }
}

Либо

while(1) {
  while (read_adc() <= 700)
    putsf("");
  putsf("oo");
}