2015-12-03 5 views
0

Кто-нибудь знает, как я могу это сделать, прежде чем выходить из него, выполняя определенный код? (только перед тем, как покинуть время). я не могу использовать еще, потому что это делает кодовая последовательность не работает должным образомвыполнить код перед выходом, пока

EDIT: 

Currently I have three screens: 
1. Home screen 
2. flow different 0 
3. configurations 

The software starts from the home screen; 
If the flow != 0 it performs the screen 2; 
If flow is back to 0 the display returns to screen 1; 
If I'm on the screen 1 and press a button it goes to screen 3; 

The problem is that if I execute the function immediately after the while I will never go to the screen 3. 

Спасибо большое.

PS: Я использую C и Arduino.

while (flow != 0){ 
    Serial.print("running flow"); 
    // It does some things... 
    // Performs an action only before leaving the while 
} 

void loop_lcd(){ 
    loop_flow(); 
    if (flow != 0){ 
    update_time(); 
    set_state(2);   
    }  
    else{  
    switch(state){ 
     case 1: // SCREEN 1 
     Serial.println("screen 1"); 
     switch(check_button()){ 
      case (bLEFT): 
      Serial.println("LEFT button pressed"); 
      lcd.clear(); set_state(3); 
      break; 
      case (bRIGHT): 
      Serial.println("RIGHT button pressed"); 
      lcd.clear(); set_state(3); 
      break;   
      default: 
      set_state(1); 
     } 
     break; 
     case 3: // SCREEN 3 
     Serial.println("executando tela 3"); 
     // ............ 
     // CODE 
     // ............ 
     } 
     break; 
    } 
    } 
} 
void set_state(char index) { 
    state = index; 
    switch(state){ 
    case 1: // STATE 1 
     //LINE 1 
     lcd.setCursor(2, 1); 
     print_day_and_time(); 
     break; 
    case 2: // STATE 2 
     // LINE 0 
     lcd.setCursor(2, 0); 
     print_day_and_time(); 
     // LINE 1 
     lcd.setCursor(0,1); 
     print_time(); 
     // ............ 
     // CODE 
     // ............ 
    case 3: // STATE 3 
     // screen 3 
     // ............ 
     // CODE 
     // ............ 
    break; 
    } 
} 
+0

И где ваша проблема? –

+0

Почему вы хотите сделать это, прежде чем покинуть время? Есть ли разница в выполнении вашего конкретного кода сразу после этого? – user463035818

+0

Вы имеете в виду 'break'? Ваш вопрос очень неясен. Does '// Он делает некоторые вещи ...' modify 'flow'? –

ответ

1

Не уверен, если я понимаю вашу проблему правильно, но один путь будет таким:

while (flow != 0){ 
    Serial.print("running flow"); 
    // It does some things... 
    if (flow == 0) { foo(); } 
} 

, но я бы не делать этого и на самом деле мне ваш вопрос похоже, что вы ищете решение, в котором нет проблем. Просто сделать это:

while (flow != 0){ 
    Serial.print("running flow"); 
    // It does some things... 
} 
foo(); 

если вы хотите foo() будет выполняться после того, как в то время прекратил работу.

Смежные вопросы