void зацикливается или нет?
- Войдите на сайт для отправки комментариев
Пнд, 18/04/2016 - 10:27
void nabor() {
delay(5000);
gsm.println("atd+хххххххххх..;"); //звоним по номеру
delay(100);
if (gsm.find("OK")) Serial.println("ATD+OK!");
if (gsm.find("ERROR")) Serial.println("ERROR");
if (gsm.find("ERROR")) nabor();
}
а можно ли создавать подобные вараинты, или нужно по другому пути шагать?
оно компилируется, правда в разных вараинтах - все же не работает.
во первых слово delay - это уже плохо, а тем более в 5 секунд
во вторых я не понял вопроса, при чем здесь "зацикливается" вообще?
да, я подозреваю, что это не верный вариант, теперь знаю название - рекурсия :)
какая альтернатива этому вараинту, что использовать?
суть чего хотел добится я думаю понятно, код "китайский" - согласен. Подскажите хоть чем и как это должно решаться, я не прошу дать готовый результат.
если еще один void написать и прыгать в него и там задержку делать - это выход?
Примерно так:
void nabor() { switch (st) { case 0: tmr=millis(); st=1; break; case 1: if (millis()-tmr>5000) st=2; break; //delay(5000); case 2: gsm.println("atd+хххххххххх..;"); //звоним по номеру tmr=millis(); st=3; break; case 3: if (millis()-tmr>100) st=4; break; //delay(100); case 4: if (gsm.find("OK")) {Serial.println("ATD+OK!"); st=5;} else if (gsm.find("ERROR")) {Serial.println("ERROR"); st=0;} break: } }Или так :
void nabor() { byte st = 0; while (st < 5) { switch (st) { case 0: tmr=millis(); st=1; break; case 1: if (millis()-tmr>5000) st=2; break; //delay(5000); case 2: gsm.println("atd+хххххххххх..;"); //звоним по номеру tmr=millis(); st=3; break; case 3: if (millis()-tmr>100) st=4; break; //delay(100); case 4: if (gsm.find("OK")) {Serial.println("ATD+OK!"); st=5;} else if (gsm.find("ERROR")) {Serial.println("ERROR"); st=0;} break; } } }..ооо.. ! огромный сенкс, пойду изучать эти варианты.
"void зацикливается или нет?", "если еще один void написать и прыгать в него и там задержку делать - это выход?"
При чём здесь void? Вы говорите про функцию, а void это всего лишь тип возвращаемого значения этой функции, а конкретно - ничего не возвращает. Называйте вещи своими именами.