выход из цикла while

0

Здесь у меня есть такая функция. проблема, с которой я столкнулся, при изменении параметра "Параметр". во-первых: я не смог изменить Set_parameter Window Second: так как в моем цикле я говорю, что если ни одна клавиша не нажала на часы отображения. из-за этого, когда я вхожу в меню раздела, он сразу возвращается обратно в Main display clock. Есть ли способ, когда я могу оставаться в разделе меню, если не нажата клавиша Exit/LEFT

Эта основная функция, когда я вызываю функцию LCD_call

 void loop()
    {
     int button;
     while(( button = read_LCD_buttons()) != btnNONE)
     {
     lcd_call();digitalClockDisplay();
     }
    }

Здесь вызывается LCD_call. LCD_call

  • 0
    Не достаточно ли break ? С какой линии ты хочешь уйти?
  • 0
    какой о / п тебе нужен?
Показать ещё 6 комментариев
Теги:
while-loop
infinite-loop

3 ответа

1

break команда должна прерывать/выходить из цикла. Может случиться так, что условие if не будет истинным, для любого входного случая.

Попробуйте отладить код, поставив точку останова внутри if.

if(button==btnSELECT) { break;//place your breakpoint here. }

и проверьте, удовлетворяет ли ваш код условию if для любого возможного ввода.

0

Вы уже задали условие в цикле While. Как только условие будет ложным, оно сломает цикл while

0

Это должно работать:

void lcd_call()
{
    while ( (button = read_LCD_buttons()) != btnSELECT)
    {
        DS_Counter=Display_selection();

        switch (DS_Counter)
        {
            case 1:
                lcd.setCursor(0,0);
                digitalClockDisplay();
                timedBeep(shortBeep,1);
                break;
            case 2:
                lcd.setCursor(0,0);
                Display_angle();
                timedBeep(shortBeep,1);
                break;
            case 3:
                lcd.setCursor(0,0);
                Display_coordinate();
                timedBeep(shortBeep,1);
                break;
            case 4:
                lcd.setCursor(0,0);
                Display_Wind();
                timedBeep(shortBeep,1);
                break;
            case 5:
                break;
        }
    }
}
  • 0
    Извините, я пытался это не сработало
  • 0
    Вы проверяли, возвращает ли когда-нибудь read_LCD_buttons() btnSELECT? Если нет, то это нормально, что ваш цикл никогда не останавливается. Проверьте вашу read_LCD_buttons() , я уверен, что проблема есть.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню