Open binary file et write binary file

Bonjour,
Est ce qu'il existe dans arduino l'équivalent en C de
fopen avec wb et fwrite wb ?

J'ai regardé dans spiffs, ca n'existe pas, il n'y a que a, r, w comme mode

En fait je souhaite écrire une structure (type def struc { ... }) dans un fichier et le lire et récupérer les valeurs de la structure, ca fonctionne très bien en C ou C++ mais sur arduino je n'ai pas trouvé.

vous faites un write avec un pointeur sur un buffer et la taille du buffer.

print() est pour la transcription ASCII, write() c'est "brut" donc ce qui est dans les octets qui est transféré.

struct Data {
    int id;
    float value;
    char name[20];
};

bool writeStruct(const char* path, const Data& data) {
    File file = SPIFFS.open(path, FILE_WRITE);
    if (!file) {
        Serial.println("Échec de l'ouverture du fichier en écriture.");
        return false;
    }
    file.write((uint8_t*)&data, sizeof(Data));
    file.close();
    Serial.println("Données écrites.");
    return true;
}

et pour lire

bool readStruct(const char* path, Data& data) {
    File file = SPIFFS.open(path, FILE_READ);
    if (!file) {
        Serial.println("Échec de l'ouverture du fichier en lecture.");
        return false;
    }
    if (file.read((uint8_t*)&data, sizeof(Data)) != sizeof(Data)) {
        Serial.println("Erreur de lecture des données.");
        file.close();
        return false;
    }
    file.close();
    return true;
}

(sans vérification de cohérence)

bien entendu il faut que la structure soit "flat" (pas de pointeur vers des données qui seraient ailleurs, sinon vous sauvez la valeur du pointeur et pas les données pointées. Donc pas de String par exemple dans la structure).

Merci pour ces détails et les infos.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.