Go Down

Topic: [Résolu] Lire fichier texte carte SD et stocker dans matrice (Read 13954 times) previous topic - next topic

skywodd

Ton but c'est quoi (en gros la matrice sert à quoi) ?
Si la matrice doit être complétement chargée en mémoire il faudra faire de l'allocation dynamique (ou avoir un nombre max de lignes fixe).
Si une seule ligne est utilisé à chaque fois il suffit de lire les lignes au fur et à mesure.

Bon sinon voila l'algo pour charger une ligne :
Code: [Select]
// Lit une ligne depuis le fichier "f" et place le résultat dans la variables "v" (pointeur)
byte readLine(File& f, uint32_t* v) {
  char buffer[32]; // Buffer temporaire pour la ligne compléte
  uint32_t tmp = 0; // Valeur temporaire pour la valeur binaire
  if (f.readBytesUntil('\n', buffer, 32) != 32) // Lit 32 octet max, s'arréte au premier \n lu
    return 1; // Erreur
  for (byte i = 0; i < 32; ++i) // Pour chaque bit
    bitSet(tmp, i, ((buffer[i] == '0') ? 0 : 1)); // si bit == '0' -> 0, sinon -> 1
  *v = tmp; // Stocke la valeur finale
  return 0; // Pas d'erreur
}

// Exemple d'utilisation
// uint32_t v;
// File f;
// Ouverture du fichier ...
// if (readLine(f, &v)) {
// Gestion de l'erreur ...
// }

A toi de faire ce qui va autour ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

nicolas34

Salut,

Est ce que vous avez pensé que ce qui est stocké sur la carte, ou ce qui est lu depuis la carte, peut être en code ASCII ?
Ca ressemble beaucoup à un problème de conversion de données !

skywodd


Est ce que vous avez pensé que ce qui est stocké sur la carte, ou ce qui est lu depuis la carte, peut être en code ASCII ?

Le code que j'ai donné en exemple travaille uniquement avec des caractères ASCII '0' ou '1'.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

nicolas34

le "texte" présent dans le fichier est encodé en ASCII mais les fonctions par défaut de lecture de l'arduino ne tienne pas forcément compte de cet encodage. Perso, j'essayerai cette piste, au moins pour être sur que le problème ne vient pas de là.

Freequant

#19
Jun 04, 2013, 05:51 pm Last Edit: Jun 04, 2013, 05:53 pm by Freequant Reason: 1
Désolé du retard,
mais finalement le problème est résolu.
J'ai réussi à lire le fichier sur la carte SD
ligne à ligne et à les stocker séparément
en utilisant la fonction readBytesUntil et seek.
Merci pour vos idées :)

Go Up