Как скопировать класс IPAddress в буфер символов? Получение ошибки: "inet_ntop' was not declared in this scope"
Я использую библиотеку Wi-Fi и пытаюсь сохранить IP-адрес в символьном буфере, чтобы можно было распечатать его на ЖК-дисплее, который принимает только символьные буферы. Мой код для этого:
char * IPAD = new char[40
IPAddress ip = WiFi.localIP();
Serial.println(ip);
char * bufIP = new char[40]();
sprintf(bufIP, "%s", inet_ntop(ip));
lcd.string(ip);
Но когда я скомпилирую это, я получаю ошибку:
"inet_ntop' was not declared in this scope"
Помощь?
@garson, 👍-1
Обсуждение1 ответ
Лучший ответ:
▲ 3
IPAddress
— это класс. Вы не можете использовать его как число (хотя в определенных обстоятельствах вы можете присвоить его uint32_t
, и он даст вам числовое представление).
Кроме того, функции inet_*
действительно актуальны только в системе POSIX с полным сетевым стеком, то есть на компьютере, а не в маленьком Arduino без надлежащего сетевого стека.
Однако вы можете легко получить доступ к отдельным байтам IP-адреса с помощью оператора []
и поместить их в массив символов правильного формата:
sprintf(bufIP, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
,
@Majenko
Смотрите также:
- Как подключиться к Arduino с помощью WiFi?
- ESP8266 не подключается к Wi-Fi
- В чем разница между вариантами RF (wifi, xbee, NRF24L01)
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Можно ли отключить WiFi на ESP8266?
- WebSocketsServer.h: No such file or directory
- Как отключить или остановить точку доступа в ESP8266?
- ESP8266 — действительно ли у него по умолчанию плохой радиус действия Wi-Fi?
попробуйте lcd.print(ip); Библиотеки lcd используют для реализации Print, а IPAddress реализует Printable, @Juraj
Моя библиотека ЖК-дисплеев принимает только элементы char* :(, @garson
затем используйте числа ip[0], ip[1], ip[2], ip[3], @Juraj
Какой ардуино вы используете?, @Craig