2016-10-14 14 views
-1

私の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 
+0

'wifiManager.autoConnect(ap2.c_str()、NULL);'についてどうでしょうか? –

答えて

1

wifiManager.autoConnect((const char*)ap2.c_str()); 

ダイナミックに割り当てられたmacStr、ap2のcharを使用している理由を理解できませんでした。 rrayはそれを処理するのに十分でしょう。それでも、あなたがそれを使いたい場合は、次のように試してみてください:

wifiManager.autoConnect((const char*)macStr); 

幸運を祈ってください!

+0

作品wifiManager.autoConnect((const char *)ap2.c_str());トリックをしました。私はまださまざまなデータ型と変換について本当に良い参考文献を見つけなければなりません。 – user1213320

関連する問題