如何将Wifi.localIP()转换为String并将其存储到外部变量

时间:2019-04-23 04:34:19

标签: 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;
  }

3 个答案:

答案 0 :(得分:1)

5分钟的搜索给了我the WiFi.localIp() function description,从那里我知道它返回了IPAddress对象。在forum.arduino.cc Topic: How to manipulate IPAddress variables / convert to string之后,您可以使用以下函数将其转换为字符串:

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

IPAddress可以作为4个int s的数组来处理。

答案 1 :(得分:1)

IPAddress转换为String,然后获取const char *并将其转换为std::string

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

答案 2 :(得分:1)

如果我们想用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() );