【问题标题】:Getting error: incompatible types in assignment of 'const char*' to 'char [100]'出现错误:将“const char*”分配给“char [100]”时类型不兼容
【发布时间】:2021-03-12 16:32:01
【问题描述】:

我正在尝试将一个字符保存到 EEPROM,然后再检索它。 我正在使用带有此代码和 arduino IDE 的 ESP32-CAM:

#include <EEPROM.h>

int addr = 0; 
char ssidString[100] = {0};
float floatFromPC2 = 0;
char pskString[100] = {0};
    
void setup() {
  if (!ssidString == "") {
    EEPROM.begin(512);          //Initialize EEPROM
    EEPROM.write(addr, 'A');    //Write character A
    addr++;                     //Increment address
    EEPROM.write(addr, 'B');    //Write character A
    addr++;                     //Increment address
    EEPROM.write(addr, 'C');    //Write character A
     
    String uuu = pskString;
    String www = ssidString + uuu;
    Serial.print(www);

    for (int i=0; i<www.length(); i++) { //loop upto string lenght www.length() returns length of string
      EEPROM.write(0x0F+i,www[i]);       //Write one by one with starting address of 0x0F
    }
    EEPROM.commit(); 
  } else if (ssidString == "") {
    EEPROM.begin(512);
    Serial.println("WHAT"); //Goto next line, as ESP sends some garbage when you reset it  
    Serial.print(char(EEPROM.read(addr)));    //Read from address 0x00
    addr++;                      //Increment address
    Serial.print(char(EEPROM.read(addr)));    //Read from address 0x01
    addr++;                      //Increment address
    Serial.println(char(EEPROM.read(addr)));    //Read from address 0x02
    addr++;                      //Increment address
    Serial.println(char(EEPROM.read(addr)));    //Read from address 0x03
    
    //Read string from eeprom
    String www;   
    //Here we dont know how many bytes to read it is better practice to use some terminating character
    //Lets do it manually www.circuits4you.com  total length is 20 characters
    for (int i=0; i<16; i++) {
      www = www + char(EEPROM.read(0x0F + i)); //Read one by one with starting address of 0x0F    
    } 
      
    String uuu;
    for (int i=31; i<32; i++) {
      uuu = char(EEPROM.read(0x0 + i));
    } 
    Serial.println("this");
    Serial.print(www);  //Print the text on serial monitor
    Serial.println("that");
    Serial.print(uuu);
    ssidString = www.c_str();
    pskString = uuu.c_str();
  }
}

当我这样做时,我得到了错误:

incompatible types in assignment of 'const char*' to 'char [100]'

我通过串行将 ssidString 和 pskString 从 ESP12e 发送到 ESP32-CAM,并通过将字节数设为 100 来使其工作,因为它不知道所说和传递的长度。

我正在尝试从 EEPROM 中获取数据并将其放入 WiFi.begin(ssidString, pskString);

有人可以帮忙吗?

【问题讨论】:

    标签: string arduino char eeprom ssid


    【解决方案1】:

    试试:

    String uuu = String(pskString);
    String www = String(ssidString) + uuu;
    

    另外,你不应该使用==比较c字符串;试试:

    if (strcmp(ssidString, "") != 0)
    

    else if(strcmp(ssidString, "") == 0)
    

    并查看在进行这些更改后会出现哪些错误(如果有)。

    【讨论】:

    • 感谢这有助于比较,但我还有一个问题需要先回答,然后才能尝试您的其他答案。
    • 我改变了方法。我用逗号保存了 ssidString 和 pskString 。然后我检索了该字符并将其拆分并将拆分用作 SSID 和 psk。感谢您的帮助。
    • 不要忘记投票和/或接受答案,如果您接受答案,那么问题不会保持开放。你甚至可以写下你自己的答案并接受它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2021-05-10
    • 2023-03-26
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多