Добрый вечер всем!
Взял за основу этот пример:
От уважаемого Garmin
Создал свои функции чтения и записи:
так пишу в переменную и сразу пытаюсь сохранить и прочитать:
В отладке показывает что данные успешно сохранились и они правильные
После этого перезагружаю модуль и посылаю команду чтения из флеш параметра:
И считывается ерунда!
Как победить проблему? Помогите пожалуйста .
Взял за основу этот пример:
Код:
static void ICACHE_FLASH_ATTR test() {
os_printf("SDK version:%s\n", system_get_sdk_version());
struct wConf
{
char ssid[32];
char passwd[64];
};
struct wConf wifiApConf;
char const ssid_str[32] = "CO2";
char const pass_str[64] = "co2passwd";
os_memcpy(wifiApConf.ssid, &ssid_str, sizeof (ssid_str));
os_memcpy(wifiApConf.passwd, &pass_str, sizeof (pass_str));
struct wConf ssidAp;
int i = spi_flash_erase_sector(0x8c);
os_printf("spi_flash_erase_sector: %d\n", i);
int o = spi_flash_write(0x8c000, (uint32 *)&wifiApConf, sizeof(wifiApConf));
os_printf("spi_flash_write: %d\n", o);
int p = spi_flash_read(0x8c000, (uint32 *)&ssidAp, sizeof(ssidAp));
os_printf("spi_flash_read: %d\n", p);
os_printf("result ssid: %s\n", ssidAp.ssid);
os_printf("result password: %s\n", ssidAp.passwd);
}
Создал свои функции чтения и записи:
Код:
struct wConf // предварительно объявил структуры и переменные
{
char ssid[32];
char passwd[64];
char id_send0[24];
char id_send1[24];
};
struct wConf wifiApConf;
struct wConf ssidAp;
char ssid_str[32] = "CO2";
char pass_str[64] = "co2passwd";
char id_send0_str[8] = "012EF412";
char id_send1_str[8] = "012EF419";
Код:
void data_read()
{
spi_flash_read(0x7c000, (uint32 *)&ssidAp, sizeof(ssidAp));
}
void data_write()
{
os_memcpy(wifiApConf.ssid, &ssid_str, sizeof (ssid_str));
os_memcpy(wifiApConf.passwd, &pass_str, sizeof (pass_str));
os_memcpy(wifiApConf.id_send0, &id_send0_str, sizeof (id_send0_str));
os_memcpy(wifiApConf.id_send1, &id_send1_str, sizeof (id_send1_str));
spi_flash_erase_sector(0x7c);
spi_flash_write(0x7c000, (uint32 *)&wifiApConf, sizeof(wifiApConf));
}
Код:
else if(string_search("AT+AP_NSET=",cmdBuffer))
{
x=0;
while(cmdBuffer[x++]!=0)
{
y++;
}
for(x=11; x<y; x++)ssid_str[x-11] = cmdBuffer[x];
//os_memcpy(wifiApConf.ssid, &buff_at, sizeof (buff_at));
data_write();
y=0;
data_read();
#ifdef PLATFORM_DEBUG
ets_uart_printf("wifiApConf=%s \r\n", ssidAp.ssid);
ets_uart_printf("%s \r\n", ssid_str);
ets_uart_printf("NSET OK\r\n");
clear_buf();
#endif
}
После этого перезагружаю модуль и посылаю команду чтения из флеш параметра:
Код:
else if(string_search("AT+AP_NSET?",cmdBuffer))
{
data_read();
#ifdef PLATFORM_DEBUG
ets_uart_printf("result ssid: %s\n", ssidAp.ssid);
#endif
clear_buf();
}
Как победить проблему? Помогите пожалуйста .