Вопрос с функциями в ESP8266
- Войдите на сайт для отправки комментариев
Пт, 02/11/2018 - 16:09
Почему вот так работает:
int test = 0;
HTTP.on("/test", HTTP_GET, []()
{
if(test == LOW)
{
test = HIGH;
HTTP.send(200, "text/html","ON");
}
else
{
test = LOW;
HTTP.send(200, "text/html","OFF");
}
});
А если в функции, то не работает.....
int test = 0;
HTTP.on("/test", HTTP_GET, []()
{
toggleTEST(test);
});
void toggleTEST (int X)
{
if(X == LOW)
{
X = HIGH;
HTTP.send(200, "text/html","ON");
}
else
{
X = LOW;
HTTP.send(200, "text/html","OFF");
}
}
Где ошибка понять то не могу?
А Вы уверенеы, что Вам это надо, и что Вы знаете, что делаете? Точно уверены?
Здесь используются лямбда выражения, о которых 99% людей реально, профессионально работающих на С++ вообще никогда не слышали. И ничего, как-то работают.
Если Вы действительно хотите лезть в такие дебри, то изучайте - https://msdn.microsoft.com/ru-ru/library/dd293608.aspx, там помёте, что во втором случае нужен иной синтакис вызова. Если же Вы не профи, а просто случайно скачали этот код откуда-то, выбросьте и ищите другой - на этой дороге, это далеко не последние грабли.
Судя по Вашим другим вопросам на форуме, Вы не профессиональный программитс, а значит Вам реально лучше выбросить этот код и писать нормально, без лямбд.
Функция нужна, чтоб ~60 кнопок описать.
Нет, я не профи совсем.
Скилл по чуть поднимаю свой)
Ну, тогда забудьте про лямбды и пишите нормально (или ищите нормальный код). Нет, если хотите, исправьте то, что есть (по той ссылке, что я дал, там всё понятно), но потом не жалуйтесь - это не последние грабли.
Чушь короче.
HTTP.on("/test", HTTP_GET, []() { toggle(test, 1);}); //тест HTTP.on("/test2", HTTP_GET, []() { toggle(test2, 2);}); //тест2 } void toggle(String data, int index) { if (data == "0") { data = "1"; HTTP.send(200, "text/html","ON"); } else { data = "0"; HTTP.send(200, "text/html","OFF"); } Serial.write (1); Serial.print (index); Serial.write (2); Serial.print (data); Serial.write (3); }ESP отправляет в Arduino mega, и обратно получает значение от меги.
if((data.index==1)&&(data.port==0)){test = ((data.data).toInt());} //приём из меги if((data.index==2)&&(data.port==0)){test2 = ((data.data).toInt());} //приём из мегиИ этот говнокод работает как надо. ХЗ вобшем.