3
votes

Comment convertir Wifi.localIP () en String et le stocker dans une variable externe

J'essaye de stocker l'adresse IP dans une chaîne externe. La valeur de mon adresse IP est en .cpp, mais je souhaite la stocker dans mon fichier .h. Je le stocke sous forme de chaîne car je veux en faire un lien. (http: // "adresse IP" /)

Mon fichier .h

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

Mon fichier .cpp

extern std::string ipadd1 = "";


3 commentaires

Alors quelle est la question?


comment le convertissez-vous?


Vous devez marquer WiFi.localIP (). ToString (). C_str (); comme réponse acceptée.


3 Réponses :



9
votes

Convertissez IPAddress en String , puis récupérez le const char * et convertissez-le en std :: string .

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


3 commentaires

Merci de m'avoir aidé, mais j'ai déjà essayé et cela n'a pas fonctionné.


ipadd1 = std :: string (WiFi.localIP (). ToString (). C_str ()) fonctionne-t-il? Notez qu'il existe une différence entre std :: string et String .


@KamilCuk pouvez-vous mettre à jour votre réponse ci-dessus pour refléter cela? Cela peut valoir la peine de fournir les deux exemples, un pour char * et un pour std :: string.



1
votes

Si nous voulons écrire Wifi.localIP () dans oled (SSD1306) ou serial, écrivez simplement WiFi.localIP (). toString () code>. Comme ceci:

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() );


0 commentaires