46
Débuter / Re : Lecture d'une carte SD
« le: octobre 24, 2021, 07:58:34 pm »
Bonsoir,
Si il s'agit d'écrire et de lire des données dans un fichier de la SD card, il est moins coûteux et plus simple d'écrire en binaire via write et de lire via read plutôt que de passer via des chaînes de caractères.
read et write ont notamment une version avec 2 arguments. Le premier est un pointeur vers les données en mémoire (un uint8_t ¨*) et le second le nombre d'octet.
Ainsi écrire un entier de 32 bits se ferait comme suit :
De manière symétrique, on lirait comme ceci :
Les deux méthodes retournent le nombre d'octets effectivement écrits ou lus. Ça permet de vérifier que tout se passe bien, que la carte n'est pas pleine, qu'on n'a pas atteint la fin de fichier :
Je n'ai pas de SD card et je ne peux donc pas fournir un exemple testé.
Si il s'agit d'écrire et de lire des données dans un fichier de la SD card, il est moins coûteux et plus simple d'écrire en binaire via write et de lire via read plutôt que de passer via des chaînes de caractères.
read et write ont notamment une version avec 2 arguments. Le premier est un pointeur vers les données en mémoire (un uint8_t ¨*) et le second le nombre d'octet.
Ainsi écrire un entier de 32 bits se ferait comme suit :
Code: [Sélectionner]
uint32_t donnee = 128000;
file.write((uint8_t *)&donnee, sizeof(donnee));
De manière symétrique, on lirait comme ceci :
Code: [Sélectionner]
file.read((uint8_t *)&donnee, sizeof(donnee));
Les deux méthodes retournent le nombre d'octets effectivement écrits ou lus. Ça permet de vérifier que tout se passe bien, que la carte n'est pas pleine, qu'on n'a pas atteint la fin de fichier :
Code: [Sélectionner]
if (file.read((uint8_t *)&donnee, sizeof(donnee)) != sizeof(donnee)) {
// erreur
}
Je n'ai pas de SD card et je ne peux donc pas fournir un exemple testé.