Enregistrer Moyenne sur une carte SD sur les memes lignes

Bonjour je voudrais enregistré des moyennes de donné sur une carte sd avec mon esp32.
Je m'explique : je voudrais cumuler les valeurs sur 24heures par tranche 1h, et ce pendant XX jours en indiquant le nombre de relever , dans le principe on ecrit:
heure,valeursMoyenne,nombreDeFois

en gros ça me donnerais un fichier comme ceci :
0,105,5
1,100,5
2,120,5
3,230,5
4,130,5
etc..

mais le programme doit prendre la valeur de l'heure correspondante a l'heure "T" sur sa ligne correspondante.faire le calule ne me pose pas de probleme,ecrire sur la sd aussi. mais je peche sur la fonction pour rechercher la ligne correspondante.

Je veut dire; Peut-on rechercher et modifier une ligne dans un fichier sur une SD avec un ESP32 ?

Bonjour d_jo

Oui, ça doit être possible.
Est-ce qu'un fichier a 24 enregistrements et il y a autant de fichiers que de dates sur la carte SD?

Cordialement
jpbbricole

le fichier à 24 enregistrements qui correspond aux heures de la journée. je peut faire des fichiers par mois si je veut , ça je peut le faire , mais c'est trouver la bonne ligne et la modifié qui me pose probleme

#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("Initializing SD card...");

  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    while (1);
  }
  Serial.println("card initialized.");
}

void loop() {
  // make a string for assembling the data to log:
  String dataString = "";

  // read three sensors and append to the string:
  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2) {
      dataString += ",";
    }
  }

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}

voici le fichier test que j'utilise sur un uno.

Bonsoir d_jo

Est-ce qu'il ,y a une RTC sur ton montage?
Qui est-ce qui fait ce fichier, dans le quel il faut rechercher, avec les lignes de 0 à 23?
Pourquoi ne pas tout faire dans un programme, soit un fichier par jour nommé par la date?

A+
Cordialement
jpbbricole

#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#define SD_CS    5

int octect = 0;
int idx;
char inputChar;

void setup() 
{
    Serial.begin(115200);
    if (!SD.begin(SD_CS)) 
    {
      Serial.println("Card Mount Failed");
       return;
     } 
    else 
   {
    Serial.println("SD Card mounted with success");
    }


  if (SD.exists("/test.txt")) 
  {
    Serial.println(F("Fichier test.txt OK"));
  } 
  else 
  {
    Serial.println(F("Fichier test.txt introuvable"));
  }

  File fichier = SD.open("/test.txt");

  while (fichier.available() > 0)
  {

    while ( idx <= 10 )
    {

      inputChar = fichier.read();

      if (inputChar == '\n' &&  idx <= 5 )
      {
        //Serial.println(idx);

        idx++;
        octect = fichier.peek();
      }
      else
      {
        break;
        Serial.println("break");
      }
    }
  }
  Serial.print("Position:");
  Serial.print(octect);
  Serial.println("   ");
  Serial.println("fin");
}

void loop() {
}

Le programme me dit que je suis à la position 55o quand je m'arrete à la 6 lignes , alors que le fichier test fait 43o.

fichier test.txt:

1
2
3
4
5
6
7
8
9
10
11
12
13

Bonjour,

Tu ne lis pas (et n'affiches pas) la position dans le fichier, mais l'octet lu dans ce fichier.

La valeur 55 que tu affiches est le code ASCII de '7'

donc c'est position() ?

oui