Как мне преобразовать Wifi.localIP() в строку и сохранить ее во внешней переменной

#c #arduino

#c #arduino

Вопрос:

Я пытаюсь сохранить IP-адрес во внешней строке. Значение моего IP-адреса находится в .cpp, но затем я хочу сохранить его в своем файле .h. Я сохраняю ее как строку, так как хочу сделать ее ссылкой. (http:// «ip-адрес» /)

Мой файл .h

 extern std::string ipadd1 = "";
  

Мой файл .cpp

 if (connectWifi("", "") == WL_CONNECTED)   {
    DEBUG_WM(F("IP Address:"));
    DEBUG_WM(WiFi.localIP());
ipadd1 = String(WiFi.localIP());
    //connected
    return true;
  }
  

Комментарии:

1. Итак, в чем вопрос?

2. как вы ее конвертируете?

3. Вы должны отметить WiFi.localIP().toString().c_str(); как принятый ответ.

Ответ №1:

Преобразуйте IPAddress в String , затем получите const char * и преобразуйте это в std::string .

 ipadd1 = WiFi.localIP().toString().c_str();
  

Комментарии:

1. ipadd1 = std::string(WiFi.localIP().toString().c_str()) Работает? Обратите внимание, что есть разница между std::string и String .

2. @KamilCuk можете ли вы обновить свой ответ выше, чтобы отразить это? Возможно, стоит предоставить оба примера, один для char * и один для std::string .

Ответ №2:

5-минутный поиск дал мне описание функции WiFi.localIP (), оттуда я знал, что она возвращает IPAddress объект. Следуяforum.arduino.cc Тема: Как управлять переменными IPAddress / преобразовать в строку вы можете использовать следующую функцию для преобразования ее в строку:

 // author apicquot from https://forum.arduino.cc/index.php?topic=228884.0
String IpAddress2String(const IPAddressamp; ipAddress)
{
    return String(ipAddress[0])   String(".")  
           String(ipAddress[1])   String(".")  
           String(ipAddress[2])   String(".")  
           String(ipAddress[3]);
}
  

IPAddress может обрабатываться просто как массив из 4 int сек.

Комментарии:

1. Как назначить переменной tho?

Ответ №3:

Если мы хотим записать Wifi.localIP() в oled(SSD1306) или последовательный, просто напишите WiFi.localIP().toString() . Вот так:

 Serial.print("Connected, IP address: ");
  Serial.print(WiFi.localIP().toString());

  display.clear();
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.setFont(ArialMT_Plain_10);
  display.drawString(0, 0, " WiFi is Connected." );
  
  display.drawString(0, 10, " IP address: "    WiFi.localIP().toString() );
  

Ответ №4:

Работа с Heltec … другие ответы просто не работают для меня. Я использовал это:

 IPAddress ipa = WiFi.localIP();
uint8_t IP_array[4]= {ipa[0],ipa[1],ipa[2],ipa[3]};
String strIP=
    String(IP_array[0]) "." 
    String(IP_array[1]) "." 
    String(IP_array[2]) "." 
    String(IP_array[3]);