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

fiei3ece  于 2023-04-01  发布在  其他
关注(0)|答案(4)|浏览(166)

我试图将IP地址存储到外部字符串中。我的IP地址值在.cpp中,但我想将其存储在我的.h文件中。我将其存储为字符串,因为我想将其作为链接。(http://“ip address”/)
我的.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;
  }
uhry853o

uhry853o1#

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

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

mbyulnm02#

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的阵列来处理。

hc8w905p

hc8w905p3#

如果我们想在oled(SSD1306)或serial中写入Wifi.localIP(),只需写入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() );
um6iljoc

um6iljoc4#

与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]);

相关问题