Bonjour!
J'essaie de naviguer dans un fichier sur ma carte sd mais je n'y arrive pas.
J'aimerais parcourir un fichier xml jusqu'à trouver une certaine balise.
Je n'ai pas réussi a le faire directement à la lecture du fichier car la fonction read() permet de lire un caractère et non pas une chaîne...
Bien sur ce serait le top 8) Si il y a une solution je suis preneur.
Du coup j'ai copié le contenu du fichier dans une chaîne. (normalement il devrait faire quelques ko, ça ne devrait pas saturer la rom de l'Arduino)
J'ai donc pu faire un print() de ma chaîne sans mal, le pb c'est pour naviguer... voici mon code de test:
#include <SD.h>
#define cs 10
unsigned long taille;
File fichier;
void setup()
{
Serial.begin(9600);
pinMode(10, OUTPUT); // pour être sur qu'on n’écris pas sur le pin 10
if (!SD.begin(cs)) { // test si la carte est présente et sans erreur
Serial.println("Carte absente ou illisible");
return;
}
fichier = SD.open("test.txt"); // ouvre le fichier
if (!fichier) { // test si l'ouverture a foirée
Serial.println("Erreur d'ouverture du fichier");
return;
}
taille = fichier.size(); //enregistre la taille du fichier
}
void loop()
{
char chaine[taille];
// init de la chaine, de la taille de celle du fichier
int i=0;
while (fichier.available()) {
chaine[i] = fichier.read();
//Serial.print(chaine[i]);
i++;
}
fichier.close();
chaine[i] = '\0';
// maintenant on peut commencer la recherche
int index = chaine.indexOf("<balise>");
Serial.println(chaine.substring(index));
}
Je me fais jeter par le compilo =( :
request for member ‘substring’ in ‘chaine’, which is of non-class type ‘char [(((unsigned int)(((int)taille) + -0x000000001)) + 1)]’
Je ne vois pas trop ce que c'est...