когда я компилирую этот код, он всегда "SendCommand" не объявляется в этой области..plzz help

#include <SoftwareSerial.h>
#define DEBUG true

SoftwareSerial esp8266(10, 11); // RX, TX

void setup() { // Open serial communications and wait for port to open:
  Serial.begin(9600); //for monitoring purposes

  sendCommand("AT+CIFS+RST\r\n", 2000, DEBUG); // reset module
  sendCommand("AT+IPR=115200\r\n", 1000, DEBUG);
  sendCommand("AT+CWMODE=1\r\n", 1000, DEBUG); // configure as access point
  sendCommand("AT+CWJAP=\"ABCDEFG\",\"12345678\"\r\n", 3000, DEBUG); //connect to a network with name ABCDEFG with password 12345678
  delay(1000);
  sendCommand("AT+CIFSR\r\n", 1000, DEBUG); // get ip address
  sendCommand("AT+CIPSTA=\"192.168.43.16\"\r\n", 1000, DEBUG);
  sendCommand("AT+CIPMUX=1\r\n", 1000, DEBUG); // configure for multiple connections
  sendCommand("AT+CIPSERVER=1,6625\r\n", 1000, DEBUG); // turn on server on port 6625
  Serial.println("Server Ready");

}

void loop() { // run over and over
  if (esp8266.available()) {
    if (esp8266.find("+IPD,0,")) {
      delay(10);
      esp8266.find(":");
      delay(10);
      char letter = esp8266.read();
      Serial.print(letter); //for monitoring purposes
      //Gets the value/char from android app
    }


String sendCommand(String command, const int timeout, boolean debug) {
  String response = "";
  esp8266.print(command); // send the read character to the esp8266
  long int time = millis();
  while ((time + timeout) > millis()) {
    while (esp8266.available()) {
      // The esp has data so display its output to the serial window
      char c = esp8266.read(); // read the next character.
      response += c;
    }
  }

  if (debug) {
    Serial.print(response);
  }
  return response;
}

, 👍0

Обсуждение

Я отформатировал ваш код, и теперь вы можете видеть, что двух } не хватает, чтобы замкнуть цикл. (и неуместный комментарий). и я добавил "символ" перед " буквой`, @Juraj

сэр ... я добавляю изменение кода, но все равно не могу его скомпилировать, он по-прежнему говорит, что "SendCommand" не был объявлен в этой области.., @Wyeth Gamba

Затем отредактируйте свой вопрос, чтобы отразить новый код, чтобы мы могли помочь вам, @chrisl

Вы заметили, что объявили и определили SendCommand() *внутри* loop (), верно?, @Ignacio Vazquez-Abrams

сэр, извините за медлительность.. какую петлю() вы имеете в виду, сэр?, @Wyeth Gamba

существует только один loop(), @jsotola


1 ответ


2

В цикле у вас есть три открывающие скобки и одна закрывающая скобка. Это добром не кончится:

void loop() {
  if (esp8266.available()) {
    if (esp8266.find("+IPD,0,")) {
      delay(10);
      esp8266.find(":");
      delay(10);
      char letter = esp8266.read();
      Serial.print(letter); //для целей мониторинга
      //Получает значение/символ из приложения для Android
    }

Еще две закрывающиеся скобки исправили бы это.

,

tnx, сэр ... я могу загрузить его прямо сейчас.. еще раз извините, сэр...Могу я спросить еще раз, сэр.. я могу загрузить его сейчас, но при использовании по команде в последовательном мониторе слова не выходят,,, @Wyeth Gamba