gpt4 book ai didi

c++ - 将字符串传递给类并保存到 eeprom

转载 作者:行者123 更新时间:2023-11-28 06:21:25 34 4
gpt4 key购买 nike

我正在编写一个类来将数据保存到 Arduino 的 EEPROM。该类称为内存。

该类包含不同的函数和变量。

char serverdefault[15] = "0032484716340";
int pricedefault = 30;

void Memory::FactoryReset()
{
TotalSold = 0;
TotalCash = 0;
Sold = 0;
Cash = 0;
Items = 0;

EEPROM_writeAnything(10, TotalSold);
EEPROM_writeAnything(20, TotalCash);
EEPROM_writeAnything(30, Sold);
EEPROM_writeAnything(40, Cash);
EEPROM_writeAnything(50, pricedefault);
EEPROM_writeAnything(60, Items);
EEPROM_writeAnything(70, serverdefault);

ReadAll();
}

另一个函数允许更改默认服务器编号。

void Memory::ChangeServer(char *number_str)
{
EEPROM_writeAnything(70, number_str);
ReadAll();
}

此功能无效。我在 void setup() 中调用该函数。

void setup() 
{
Serial.begin(9600);
Serial.println("started");
Serial.println("factory reset");
mem.FactoryReset();
Serial.println("change server number");
mem.ChangeServer("1234567890123");
}

保存在 EEPROM 中的值由“b32484716340”代替“1234567890123”。我做错了什么?

最佳答案

Memory::ChangeServer 中,您正在将指针本身写入 EEPROM(即地址),而不是指针指向的字符串。解决此问题的一种方法是:

void Memory::ChangeServer(char *number_str)
{
for (int i = 0; i <= strlen(number_str); ++i)
{
EEPROM_writeAnything(70 + i, number_str[i]);
}
ReadAll();
}

关于c++ - 将字符串传递给类并保存到 eeprom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258580/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com