Arduino Ethernet Shield: "no matching function for call to 'EthernetClass::begin()'"

Поэтому я понятия не имею, что происходит, когда дело доходит до HTTP-запросов и DHCP. И я думаю, что это часть того, что я делаю здесь неправильно. Каждый раз, когда я пытаюсь скомпилировать этот код, я получаю ошибку. Я просмотрел несколько форумов и не могу найти ответа. Кто-нибудь может помочь?

Мой код:


//Расширения
#include <SPI.h>
#include <Ethernet.h>

//Объявление переменной
int inPin = A0; //Pot wiper pin
int inVal = 0;
float unitCon = 0;

byte mac[] = {0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19};

//Различные вещи инициализации Ethernet
EthernetServer server(8080); //Порт для веб-сервера
EthernetClient client;

void setup() {
  //Инициализация отладки USB
  Serial.begin(9600);





  //Еще больше вещей инициализации Ethernet
  Serial.println("Ethernet attempting initialization...");
  Ethernet.begin(); //Запускает ethernet, read would ya
  //ниже приведен код для обнаружения проблем с оборудованием ethernet
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Error connecting to eththernet hardware."); //Сообщение об ошибке USB debug ethernet
      while (true) {  //В основном останавливает все, если оборудование Ethernet не работает
        delay(1);
        }
      }
  //ниже приведен код для отправки сообщения в меню отладки, если есть проблема с подключением ethernet
    if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable not connected");
    }


  //Инициализация сервера
  Serial.println("Server attempting initialization...");
  server.begin(); //Команда инициализации сервера
  Serial.print("Server IP: ");
  Serial.println(Ethernet.localIP());


  //Math для определения единиц измерения напряжения в следующем коде
  unitCon = 5.015/1024;

}

void loop() {
  //считывание значений:
  inVal = analogRead(inPin);

  //печать на последовательном мониторе
    //Serial.print(float(inVal*unitCon));
    //Serial.println(" вольты");



  //Для подключения клиентов прослушивается следующее
    EthernetClient client = server.available();
    if (client) {
      Serial.println("Client Connected");
      //http магия, о которой я понятия не имею....
      boolean currentLineIsBlank = true;
      while (client.connected()) {
        if (client.available()) {
          char c = client.read(); //Я думаю, что здесь происходит то, что мы используем символ для хранения информации о клиенте... может быть...
          Serial.write(c);
          if (c == '\n' && currentLineIsBlank) {  //Проверяет, удовлетворен ли http-запрос
            //Ниже приведен стандартный http-заголовок
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println("Connection: close");
            client.println("Refresh: 5");  //Определяет время в секундах, в течение которого веб-страница должна автоматически обновляться
            client.println();
            //Запуск содержимого веб-страницы
            client.println("<!DOCTYPE HTML>");
            client.println("<html>");
            //Содержание страницы
            client.print(float(inVal * unitCon));
            client.print(" volts");
            //Закрытие HTML
            client.println("</html>");
          }
          //Следующая if/elif-это функция budget currentLineIsBlank
          if (c == '\n') {
            currentLineIsBlank = true;
          }
          else if (c != '\r') {
            currentLineIsBlank = false;
          }
        }
      }
      //Дает веб - браузерам время для получения ранее отправленных данных
      delay(1);
      //Завершение соединения
      client.stop();
      Serial.println("Client Disconnected");
    }



}

Ошибка:

C:\Users\drew0\Documents\Arduino\sketch_jun18a\sketch_jun18a.ino: In function 'void setup()':
sketch_jun18a:27:18: error: no matching function for call to 'EthernetClass::begin()'
   Ethernet.begin(); //Begins the ethernet, read would ya
                  ^
In file included from C:\Users\drew0\Documents\Arduino\sketch_jun18a\sketch_jun18a.ino:4:0:
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:82:13: note: candidate: static int EthernetClass::begin(uint8_t*, long unsigned int, long unsigned int)
  static int begin(uint8_t *mac, unsigned long timeout = 60000, unsigned long responseTimeout = 4000);
             ^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:82:13: note:   candidate expects 3 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:88:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress)
  static void begin(uint8_t *mac, IPAddress ip);
              ^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:88:14: note:   candidate expects 2 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:89:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress, IPAddress)
  static void begin(uint8_t *mac, IPAddress ip, IPAddress dns);
              ^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:89:14: note:   candidate expects 3 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:90:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress, IPAddress, IPAddress)
  static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway);
              ^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:90:14: note:   candidate expects 4 arguments, 0 provided
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:91:14: note: candidate: static void EthernetClass::begin(uint8_t*, IPAddress, IPAddress, IPAddress, IPAddress)
  static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet);
              ^~~~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src/Ethernet.h:91:14: note:   candidate expects 5 arguments, 0 provided
exit status 1
no matching function for call to 'EthernetClass::begin()'

, 👍2

Обсуждение

upvote для представления правильно отформатированного кода и полной распечатки ошибок ... пожалуйста, задайте вопрос о проблеме вместо " Кто-нибудь может помочь?` ... это не вопрос об arduino, @jsotola

Ethernet.begin ожидает аргументы; возможно, вы захотите сначала следовать вместе с учебником, например: https://www.arduino.cc/en/Tutorial/LibraryExamples/WebClient. Обратите внимание, как их вызов "begin" предоставляет MAC - адрес., @Dave Newton

Это также обсуждается в ссылке на функцию [begin] (https://www.arduino.cc/en/Reference/EthernetBegin)., @Dave Newton

Я голосую за то, чтобы закрыть этот вопрос, потому что реальной проблемы нет., @Juraj

@Juraj Я просил помощи с кодом, это запрещено?, @Drew Butler

нет никакой проблемы, вы просто игнорируете сообщение об ошибке, примеры и документацию, @Juraj


1 ответ


1

Вам просто нужно указать MAC - адрес в качестве параметра, например:

Ethernet.begin(mac)
,

http://slash7.com/2006/12/22/vampires/, @Juraj

@Juraj Понял намек :-), @Nino