В SPIFFS, как я могу удалить старые данные для добавления новых данных? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть модуль ESP8266, модуль связан с датчиком температуры, а значения хранятся в SPIFFS.

Я планировал стереть старые данные по одному (например, FIFO) с новыми данными, когда память SPIIFS заполнен.

Не могли бы вы помочь мне написать код таким образом?

это часть кода, с которой я связан

    void write_task(char *cFileName)
{
 int c=0;
int s=0;
int record_no=0;

  bool ok = SPIFFS.begin(true);
  if (!ok)
  {
#ifdef DEBUG
    Serial.println("File not begin");
#endif
  }
  else
  {
    iHdl = SPIFFS.open(cFileName, "r+");
    if (!iHdl)
    {
#ifdef DEBUG
      Serial.println("File not opened");
#endif
    }
    else
    {
    if(c!=0)
    {
      if(c>=3)
       {
        record_no=c-4;
       }

       else
       record_no=c;
         task_edit(record_no);

    }
    else
    {

    iHdl.write((uint8_t *)&obj_task, sizeof(obj_task));
    iHdl.close();
    }
    c++;


      Serial.println("File SUCESS");
       delay(100);
        iHdl = SPIFFS.open(cFileName, "r");
           int c = iHdl.size() / sizeof(obj_task);
        for(int i=0;i<c;i++)
        {
       iHdl.read((uint8_t *)&obj_task, sizeof(obj_task));
       Serial.println(obj_task.Date);
        }
       iHdl.close();
    }
  }


  void  task_edit(int record)
{
struct TASK b;

iHdl.seek(record * sizeof(struct TASK));
iHdl.read( ( uint8_t*)&b, sizeof(struct TASK));
b=obj_task;
iHdl.seek(record * sizeof(struct TASK));
iHdl.write( (uint8_t*)&b, sizeof(struct TASK));

    iHdl.close();
}
...