Ошибка компиляции библиотеки Ethernet
Я просто пытаюсь подключить свой Adruino к Интернету, и мой конфигурационный код подключения к Ethernet завершается с ошибкой, когда я пытаюсь его проверить, и я не уверен, какова точная причина.
Я использую экран Ethernet и установил библиотеку Ethernet v.2.0.0.
Это запущенный код:
WANStatus initialiseWAN() {
// Введите MAC-адрес для вашего контроллера ниже.
// Более новые экраны Ethernet имеют MAC-адрес, напечатанный на наклейке на экране
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
WANStatus res;
Serial.println("[INFO]: Initialising WAN");
// Попробуйте инициализировать подключение Ethernet
if (Ethernet.begin(mac) == 0) {
res.error = true;
res.retry = true;
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
res.message = "Ethernet shield was not found";
Serial.print("[ERROR]: "); Serial.println(res.message);
return res;
}
// Если присутствуют все компоненты, попробуйте назначить статический IP-адрес
IPAddress ip(192, 168, 0, 177);
IPAddress myDns(192, 168, 0, 1);
Ethernet.begin(mac, ip, myDns)
Serial.print("[INFO]: Assigned static IP: "); Serial.println(Ethernet.localIP());
if (Ethernet.linkStatus() == LinkOFF) {
res.message = "Ethernet cable is not connected";
Serial.print("[ERROR]: "); Serial.println(res.message);
return res;
}
if (Ethernet.linkStatus() == Unknown) {
res.message = "Ethernet link status is 'Unknown' check the cable";
Serial.print("[ERROR]: "); Serial.println(res.message);
return res;
}
// Назначен статический IP-адрес
res.error = false;
res.retry = false;
res.message = "Static IP Address";
return res;
} else {
// Полученный IP-адрес от DHCP
Serial.print("[INFO]: Received DHCP IP: "); Serial.println(Ethernet.localIP());
res.error = false;
res.retry = false;
res.message = "DHCP IP Address";
return res;
}
// Задача: проверьте модули Wi-Fi здесь
}
И, сообщение об ошибке:
[Starting] Verifying sketch 'controller\controller.ino'
[Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README.
Loading configuration...
Initialising packages...
Preparing boards...
Verifying...
In file included from C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Dns.cpp:8:0:
C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Dns.cpp: In member function 'uint16_t DNSClient::BuildRequest(const char*)':
C:\Program Files (x86)\Arduino\libraries\Ethernet\src\utility/w5100.h:457:25: warning: result of '(256 << 8)' requires 18 bits to represent, but 'int' only has 16 bits [-Wshift-overflow=]
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
~~~^~~
C:\Program Files (x86)\Arduino\libraries\Ethernet\src\Dns.cpp:164:18: note: in expansion of macro 'htons'
twoByteBuffer = htons(QUERY_FLAG | OPCODE_STANDARD_QUERY | RECURSION_DESIRED_FLAG);
^~~~~
Sketch uses 22574 bytes (69%) of program storage space. Maximum is 32256 bytes.
Global variables use 1467 bytes (71%) of dynamic memory, leaving 581 bytes for local variables. Maximum is 2048 bytes.
IntelliSense configuration already up to date. To manually rebuild your IntelliSense configuration run "Ctrl+Alt+I"
[Done] Verifying sketch 'controller\controller.ino'
@KostR, 👍3
1 ответ
▲ 0
Все в порядке. Ошибки компилятора нет, и ваш скетч готов к загрузке.
Предупреждение компилятора "результат '(256 << 8)' требует представления 18 бит, но 'int' имеет только 16 бит" из исходного кода библиотеки Ethernet - вам не о чем беспокоиться.
,
@Juraj
Смотрите также:
- Ошибка: expected unqualified-id before 'if'
- Ошибка компиляции кода для Arduino/Genuino Uno
- Ошибка : заблудиться '\' в программе
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Недопустимое преобразование из 'char' в 'const char*' [-fpermissive] в строке
- Ошибка компиляции в nodeMCU вместе с датчиком температуры oneWire ds18b20 и ЖК-дисплеем 2x16 (не I2C)
- Ошибка компиляции: "cannot declare 'client' to be of abstract type 'Client'"
- Ошибка: function was not declared in this scope when using a library without classes
предупреждение исправлено в Ethernet 2.0.1, выпущенном 6 июля 2022 г., @Juraj