Ошибка Класс Client переименован в EthernetClient

Heres_M
Offline
Зарегистрирован: 16.12.2016

Есть скетч, для пингования IP фдреса через Ethernet шилд W5100

#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
byte server[] = { 194, 87, 0, 50 };
int outputPin = 8; 
Client client(server, 80);
boolean send_request()
{
  if (client.connect()) {
    digitalWrite(outputPin, 1);
    Serial.println("1");
  }else{
    digitalWrite(outputPin, 0); 
    Serial.println("0");
  }
}
void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  pinMode(outputPin, OUTPUT);
}
void loop()
{
  send_request();
  client.stop();
  delay(1000);
}
 
 
При компеляции пишет ошибку "Класс Client переименован в EthernetClient."
Помогите!!! Переименовываю Client в EthernetClient тоже пишет ошибку. Что надо сделать чтоб ошибки не было.
 
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Heres_M пишет:

Что надо сделать чтоб ошибки не было.

 
Несколько вещей.
 
1. Выкладывать код по правилам
2. Выкладывать также копипасту сообщения об ошибке
3. Не писать "переименовываю ...", а выкладывать также и изменённый код
4. К изменённому коду также выкладывать копипасту сообщения об ошибке.
5. Дать ссылку на ту самую библиотеку Ethernet.h, которая используется. т.к. есть 100500 разных версий.
 
Если Вы всё это сделаете, то Вам помогут, а так ... кому надо в пять раз больше работу делать, чем необходимо и всё это раскапывать за Вас? Если это Вам не нужно, то другим и подавно.
Heres_M
Offline
Зарегистрирован: 16.12.2016
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
byte server[] = { 194, 87, 0, 50 };
int outputPin = 8; 
Client client(server, 80);
boolean send_request()
{
  if (client.connect()) {
    digitalWrite(outputPin, 1);
    Serial.println("1");
  }else{
    digitalWrite(outputPin, 0); 
    Serial.println("0");
  }
}
void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  pinMode(outputPin, OUTPUT);
}
void loop()
{
  send_request();
  client.stop();
  delay(1000);
}

 

Heres_M
Offline
Зарегистрирован: 16.12.2016

Ошибка следующего характера:

Arduino: 1.6.12 (Windows 7), Плата:"Arduino/Genuino Uno"
 
________________________:7: error: Класс Client переименован в EthernetClient.
С версии Arduino 1.0 класс Client в библиотеке Ethernet переименован в EthernetClient.
 
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:7:25: note: candidates are:
 
In file included from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:5:0,
 
                 from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/Ethernet.h:7,
 
                 from D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:2:
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note: Client::Client()
 
 class Client : public Stream {
 
       ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note:   candidate expects 0 arguments, 2 provided
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note: constexpr Client::Client(const Client&)
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note:   candidate expects 1 argument, 2 provided
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note: constexpr Client::Client(Client&&)
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note:   candidate expects 1 argument, 2 provided
 
________________________:7: error: cannot declare variable 'client' to be of abstract type 'Client'
 
In file included from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:5:0,
 
                 from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/Ethernet.h:7,
 
                 from D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:2:
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:26:7: note:   because the following virtual functions are pure within 'Client':
 
 class Client : public Stream {
 
       ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:31:18: note: virtual size_t Client::write(uint8_t)
 
   virtual size_t write(uint8_t) =0;
 
                  ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:32:18: note: virtual size_t Client::write(const uint8_t*, size_t)
 
Несколько библиотек найдено для "Ethernet.h"
   virtual size_t write(const uint8_t *buf, size_t size) =0;
 
 Используется: C:\Users\1\Documents\Arduino\libraries\Ethernet
                  ^
 
Не используется: C:\Program Files (x86)\Arduino\libraries\Ethernet
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:33:15: note: virtual int Client::available()
 
   virtual int available() = 0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:34:15: note: virtual int Client::read()
 
   virtual int read() = 0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:36:15: note: virtual int Client::peek()
 
   virtual int peek() = 0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:37:16: note: virtual void Client::flush()
 
   virtual void flush() = 0;
 
                ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:29:15: note: virtual int Client::connect(IPAddress, uint16_t)
 
   virtual int connect(IPAddress ip, uint16_t port) =0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:30:15: note: virtual int Client::connect(const char*, uint16_t)
 
   virtual int connect(const char *host, uint16_t port) =0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:35:15: note: virtual int Client::read(uint8_t*, size_t)
 
   virtual int read(uint8_t *buf, size_t size) = 0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:38:16: note: virtual void Client::stop()
 
   virtual void stop() = 0;
 
                ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:39:19: note: virtual uint8_t Client::connected()
 
   virtual uint8_t connected() = 0;
 
                   ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:40:11: note: virtual Client::operator bool()
 
   virtual operator bool() = 0;
 
           ^
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino: In function 'boolean send_request()':
 
________________________:10: error: no matching function for call to 'Client::connect()'
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:10:22: note: candidates are:
 
In file included from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:5:0,
 
                 from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/Ethernet.h:7,
 
                 from D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:2:
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:29:15: note: virtual int Client::connect(IPAddress, uint16_t)
 
   virtual int connect(IPAddress ip, uint16_t port) =0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:29:15: note:   candidate expects 2 arguments, 0 provided
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:30:15: note: virtual int Client::connect(const char*, uint16_t)
 
   virtual int connect(const char *host, uint16_t port) =0;
 
               ^
 
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Client.h:30:15: note:   candidate expects 2 arguments, 0 provided
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:17:1: warning: no return statement in function returning non-void [-Wreturn-type]
 
exit status 1
Класс Client переименован в EthernetClient.
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 

 

Heres_M
Offline
Зарегистрирован: 16.12.2016

Прикладываю измененный скетч:

#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
byte server[] = { 194, 87, 0, 50 };
int outputPin = 8; 
EthernetClient client(server, 80);
boolean send_request()
{
  if (client.connect()) {
    digitalWrite(outputPin, 1);
    Serial.println("1");
  }else{
    digitalWrite(outputPin, 0); 
    Serial.println("0");
  }
}
void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);
  pinMode(outputPin, OUTPUT);
}
void loop()
{
  send_request();
  client.stop();
  delay(1000);
}

 

Heres_M
Offline
Зарегистрирован: 16.12.2016

После изменения возникает ошибка:

Arduino: 1.6.12 (Windows 7), Плата:"Arduino/Genuino Uno"
 
________________________:7: error: no matching function for call to 'EthernetClient::EthernetClient(byte [4], int)'
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:7:33: note: candidates are:
 
In file included from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/Ethernet.h:7:0,
 
                 from D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:2:
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:12:3: note: EthernetClient::EthernetClient(uint8_t)
 
   EthernetClient(uint8_t sock);
 
   ^
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:12:3: note:   candidate expects 1 argument, 2 provided
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:11:3: note: EthernetClient::EthernetClient()
 
   EthernetClient();
 
   ^
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:11:3: note:   candidate expects 0 arguments, 2 provided
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:8:7: note: constexpr EthernetClient::EthernetClient(const EthernetClient&)
 
 class EthernetClient : public Client {
 
       ^
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:8:7: note:   candidate expects 1 argument, 2 provided
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:8:7: note: constexpr EthernetClient::EthernetClient(EthernetClient&&)
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:8:7: note:   candidate expects 1 argument, 2 provided
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino: In function 'boolean send_request()':
 
________________________:10: error: no matching function for call to 'EthernetClient::connect()'
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:10:22: note: candidates are:
 
In file included from C:\Users\1\Documents\Arduino\libraries\Ethernet\src/Ethernet.h:7:0,
 
                 from D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:2:
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:15:15: note: virtual int EthernetClient::connect(IPAddress, uint16_t)
 
   virtual int connect(IPAddress ip, uint16_t port);
 
               ^
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:15:15: note:   candidate expects 2 arguments, 0 provided
 
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:16:15: note: virtual int EthernetClient::connect(const char*, uint16_t)
 
Несколько библиотек найдено для "Ethernet.h"
   virtual int connect(const char *host, uint16_t port);
 
 Используется: C:\Users\1\Documents\Arduino\libraries\Ethernet
               ^
 
Не используется: C:\Program Files (x86)\Arduino\libraries\Ethernet
C:\Users\1\Documents\Arduino\libraries\Ethernet\src/EthernetClient.h:16:15: note:   candidate expects 2 arguments, 0 provided
 
D:\master\arduino\Проект Пингера\Arduino-Ping-master (3)\Arduino-Ping-master\icmp_ping\examples\________________________\________________________.ino:17:1: warning: no return statement in function returning non-void [-Wreturn-type]
 
exit status 1
no matching function for call to 'EthernetClient::EthernetClient(byte [4], int)'
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
Heres_M
Offline
Зарегистрирован: 16.12.2016

Используется стандартная библиотека Ethernet с официальной версии с сайта https://www.arduino.cc/en/Main/Software

ratman
Offline
Зарегистрирован: 11.10.2015

Ну и что за ересь в 6-й строке? Вообще, возьми скетч из примеров и его начинай колупать. "Хочешь научиться программировать -- возьми дизассемблер и посмотри, как это делают другие." (с) немой.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, так сообщение-то читали. Там же всё сказано:

1.
7: error: no matching function for call to 'EthernetClient::EthernetClient(byte [4], int)'

Вы написали в 6-ой строке  "EthernetClient client(server, 80);", но у класса EthernetClient нет конструктора с двумя параметрами. Есть без параметров вовсе и есть с одним. Вот они
      EthernetClient();
      EthernetClient(uint8_t sock);
 
Зачем Вы пытаетесь ему два передавать? Напишите правильно
 
2.
10: error: no matching function for call to 'EthernetClient::connect()'
 
Опять же Вы написали в девятой строке "if (client.connect()) {", но у класса EthernetClient нет метода connect без параметров. Есть два метода connect, но обоим нужны параметры - IP-адрес и порт. А иначе с чем именно Вы соединяться собрались? Вот эти методы
      virtual int connect(IPAddress ip, uint16_t port);
      virtual int connect(const char *host, uint16_t port);
 
Напишите внятно с чем соединяетесь, т.е. задайте IP-адрес и порт.
 
Heres_M
Offline
Зарегистрирован: 16.12.2016

Так что где писать чтоб заработало. Я полный 0. Ардуино вчера купил! Helpppp!!!

Тему брал отсюда http://www.freeduino.ru/forum/viewtopic.php?id=67

Heres_M
Offline
Зарегистрирован: 16.12.2016

Есть еще такая тема тамже. Ошибка таже!!!!

#include <Ethernet.h>
/*"Админский светофор"*/
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 88, 25 }; // IP-адрес Ethernet shield`a
byte subnet[] = { 255, 255, 255, 0 };   //маска подсети
byte server[] = {194, 87, 0, 50}; // IP-адрес жертвы, шучу. Адрес удаленного интернет-сервера (www.ru)
byte gateway[] = { 192,168, 88, 1 }; // Шлюз с локальной сети 
int redfPin = 8; // красный светодиод (ошибка соединения)на 8 пине
int redPin = 6; // красный светодиод на 6 пине
int yellowPin = 4; // желтый светодиод на 4 пине
int greenPin = 2;  // зеленый светодиод на 2 пине
int low = 50 ; // нижняя планки величины пинга что меньше значения low - это нормально 
int middle = 200 ; // средняя планка величины пинга что меньше значения low - это средняя наггрузка
Client client(server, 80); // порт по которому мы будем соединяться с удаленным сервером

boolean send_request()
{
  int sc_start=millis(); // замеряем время до начала подключения
  if (client.connect()) {
    int sc_stop=millis(); // после успешного соединения замеряем время окончатния соединения
    rtime=(rtime+(sc_stop-sc_start))/2; // считаем сколько времени ушло на соединение - среднее значение
    // Время отклика привысило критический предел - зажигаем красный светодиод
    if (rtime > middle){ 
      digitalWrite(redfPin, 0); 
      digitalWrite(redPin, 1);
      digitalWrite(yellowPin, 0);
      digitalWrite(greenPin, 0);
      Serial.print("Red status ->");
    }
    // Время отклика в среднем диапазоне - зажигаем желтый светодиод
    if ((rtime > low) && (rtime < middle)){ 
      digitalWrite(redfPin, 0); 
      digitalWrite(redPin, 0);
      digitalWrite(yellowPin, 1);
      digitalWrite(greenPin, 0);
      Serial.print("Yellow status ->");
    }
    // Время отклика в минимальном диапазоне - зажигаем зеленый светодиод
    if ((rtime > 1) && (rtime < low)){ 
      digitalWrite(redfPin, 0); 
      digitalWrite(redPin, 0);
      digitalWrite(yellowPin, 0);
      digitalWrite(greenPin, 1);
      Serial.print("Green status ->");
    }
    Serial.print("average response time = ");
    Serial.println(rtime);
//    Serial.print("Debug: response time = ");
//    Serial.println(sc_stop-sc_start);  
  }else{
    // Не удалось соединиться - зажигаем красный светодиод (ошибка соединения)
    digitalWrite(redfPin, 1); 
    digitalWrite(redPin, 0); 
    digitalWrite(yellowPin, 0); 
    digitalWrite(greenPin, 0); 
    Serial.println("Red status -> response time = Timeout");
    rtime=rtime+middle; 
  }
}

void setup()
{
  Ethernet.begin(mac, ip, gateway, subnet);
  Serial.begin(9600);
  pinMode(redfPin, OUTPUT);
  pinMode(redPin, OUTPUT);
  pinMode(yellowPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
 // Проводим тест всех светодиодов при запуске
  digitalWrite(redfPin, 1); 
  delay(1000);
  digitalWrite(redPin, 1);
  delay(1000);
  digitalWrite(yellowPin, 1);
  delay(1000);
  digitalWrite(greenPin, 1);
  delay(2000);
  //Сбрасываем состояние светодиодов на выкл.
  digitalWrite(redfPin, 0); 
  digitalWrite(redPin, 0);
  digitalWrite(yellowPin, 0);
  digitalWrite(greenPin, 0);
}
void loop()
{
  send_request();
  client.stop();
  delay(10000);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Heres_M пишет:

Так что где писать чтоб заработало. Я полный 0. Ардуино вчера купил! Helpppp!!!

Не понял, так я же Вам всё объяснил. Вам что-то осталось непонятным? Спрашивайте! Опять же , там при бибилотеке примеры есть, запускайте их, смотрите, как люди делают.

Или Вы хотите, чтобы я за Вас написал? Тогда Вы раздел форума перепутали. Здесь помогают тем, кто сам делает. А если нужно сделать вместо Вас, то запостите в разделе "Ищу исполнителя". Там сделают.