私のESP8266には、Stand
のMAC名からセミコロンを差し引いたもの(Stand5CCF7F238734
)をAP名に設定しようとしています。変数をwifiManager.autoConnect()に渡してAPに名前を付けるには
私が書いたGetMyMacAddress()
機能は明らかに動作していますが、シリアル出力にはそのことが示されています。
文字列またはchar変数をwifiManager.autoConnect()
に渡すたびに、コンパイラエラーが発生します。ヘッダファイルはString型を識別します。私はap2
(文字列型)を渡すと
私はmacStr
または*macStr
'のconstのchar *' から 'シャアから
無効な変換を渡す場合は、[-fpermissive]
は私が取得:
'WiFiManager :: autoConnect(String &)'への呼び出しで一致する関数がありません。
マイコード:
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
String ap = "Stand";
String ap2;
uint8_t mac[6];
char const macStr[19] = {0};
void setup() {
Serial.begin(115200);
WiFiManager wifiManager; //WiFiManager -- Local intialization.
ap2 = ap + GetMyMacAddress();
//std::string ap2;
char *macStr = new char[ap2.length()+ 1 ];
strcpy(macStr, ap2.c_str());
//fetches ssid and pass from eeprom and tries to connect
//if connect fails it starts an access point with the specified name
//here "AutoConnectAP" and goes into a loop awaiting configuration
wifiManager.autoConnect("Stand");
//or use this for auto generated name ESP + ChipID
//wifiManager.autoConnect();
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
Serial.print("ap2"); Serial.print(" "); Serial.print(ap2); Serial.println(" String");
Serial.print("macStr"); Serial.print(" "); Serial.print(macStr); Serial.println(" Char");
}
void loop() {
}
String GetMyMacAddress()
{
uint8_t mac[6];
char macStr[18] = {0};
WiFi.macAddress(mac);
sprintf(macStr, "%02X%02X%02X%02X%02X%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); // no :'s
// sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); // with :'s
return String(macStr);
}
接続し、シリアル出力:あなたはAP2 Stringオブジェクトを使用したい場合、あなたはそれがconstの鋳造などでのchar配列の使用する必要が
connected...yeey :)
ap2 Stand5CCF7F238734 String
macStr Stand5CCF7F238734 Char
'wifiManager.autoConnect(ap2.c_str()、NULL);'についてどうでしょうか? –