Function was not declared in this scope
- Войдите на сайт для отправки комментариев
Втр, 08/03/2016 - 12:13
Здравствуйте, уважаемые ардуинщики!
Помогите, пожалуйста разобраться, самому не получается.
Пишу код в Arduino IDE для ESP8266, но вопрос программный, поэтому пишу сюда, а не в сообщество ESP8266. Хочу отправлять данные на сервис ThingSpeak, при проверке скетча выдает ошибку: "'httpRequest' was not declared in this scope". Код привожу ниже.
Изначально код взят из официального примера, но он написан для ethernet shield и переделан мной. Исходный код компилируется без ошибок.
#include <ESP8266WiFi.h> char thingSpeakAddress[] = "api.thingspeak.com"; const char* ssid = "your-ssid"; const char* password = "your-password"; long lastConnectionTime = 0; const unsigned long postingInterval = 10L * 1000L; int CO2 = 0; WiFiClient client; void setup() { Serial.begin(9600); delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { if (client.available()) { char c = client.read(); Serial.write(c); } if (millis() - lastConnectionTime > postingInterval) { CO2 = analogRead(0); httpRequest(); } } void httpRequest() { // close any connection before send a new request. // This will free the socket on the WiFi shield client.stop(); // if there's a successful connection: if (client.connect(thingSpeakAddress, 80)) { Serial.println("connected"); // send the HTTP PUT request: client.print("GET http://api.thingspeak.com/update?key=UM4G5EH4QI4TPMGS&field1="); client.print(CO2); client.println(" HTTP/1.1"); client.println("Host: api.thingspeak.com"); //client.println("User-Agent: arduino-ethernet"); client.println("Connection: close"); client.println(); // note the time that the connection was made: lastConnectionTime = millis(); } else { // if you couldn't make a connection: Serial.println("connection failed"); } }
В вопросе содержится ответ, какойто элемент находится вне зоны видимости. Т.е. обявлен как локальный, но не входит в зону видимости. В rel так и должно быть с кавычками?
Добавь прототип функции где нибудь вверху:
void httpRequest();
Добавь прототип функции где нибудь вверху:
void httpRequest();
Я не просматривал эту библиотеку, но есть такое подазрение что эта функция объявлена как privat и используется внутри самой библиотеки. А вот использовать ее в основном теле программы по этой причине нет возможности. В таком случае ее надо перекинуть в public.
Хочу отправлять данные на сервис ThingSpeak, при проверке скетча выдает ошибку: "'httpRequest' was not declared in this scope". Код привожу ниже.
Совершенно очевидно, что это не единственное сообщение об ошибке. У Вас не скомпилировалась функция и, соотевтсвенно, там где она используется - она считается необъявленной.
Потрудитесь пожалуйста привести сообщения компилятора полностью, всё, что он выдал.
Заодно разберитесь с использованием кавычек с строке 54.
Совершенно очевидно, что это не единственное сообщение об ошибке. У Вас не скомпилировалась функция и, соотевтсвенно, там где она используется - она считается необъявленной.
Потрудитесь пожалуйста привести сообщения компилятора полностью, всё, что он выдал.
Заодно разберитесь с использованием кавычек с строке 54.
С кавычками все вроде бы нормально, просто все слетело при вставке кода.
Вот, что выдает компилятор:
Делали то, что Вам советовал в посте №2?
Если делали и не помогло, давайте ТОТ скетч и ТО сообщение.
Также скажите какая у Вас версия IDE
Делали то, что Вам советовал в посте №2?
Если делали и не помогло, давайте ТОТ скетч и ТО сообщение.
Также скажите какая у Вас версия IDE
Делал, вставлял "void httpRequest" выше "void loop", в остальном скетч не менял, на что компилятор отвечал:
Делали то, что Вам советовал в посте №2?
Если делали и не помогло, давайте ТОТ скетч и ТО сообщение.
Также скажите какая у Вас версия IDE
Делал, вставлял "void httpRequest" выше "void loop", в остальном скетч не менял, на что компилятор отвечал:
Как, вот так, как пишете вставляли?
Черт побери! Заработало! Видимо, изначально как-то не так вставил "void httpRequest".
Спасибо за помощь!