Pages: 1 [2]   Go Down
Author Topic: [RESOLU] Formatage fichier XML  (Read 2699 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 224
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

D'après la page de la bilbiothèque SD, elle gère le FAT32 smiley
« Last Edit: October 31, 2012, 04:55:14 am by SesechXP » Logged


Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est bien 512 fichiers ou répertoires pour le répertoire racine car la FAT pour le répertoire racine est de taille fixe
Cette limite saute pour les sous répertoires qui peuvent être étendus dynamiquement sur plusieurs clusters

... en théorie

Car effectivement il faudrait vérifier que l'implémentation Arduino permette de gérer le cas général.
A la place de l'auteur, je ne me serais pas embarrassé d'une implémentation complète pour un micro 8 bit.
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Full Member
***
Karma: 0
Posts: 127
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'essaie déjà de former le nom du fichier me permettant de créer le fichier sur la carte SD.
voila une partie du code mais cela ne créé pas le fichier avec le nom espéré ... lol
la nuit porte conseil comme ondit

 
Code:
nbrefichier = nbrefichier + 1;
    nomfichier = nbrefichier + ".txt";
    char charBuf[nomfichier.length()+1];
    nomfichier.toCharArray(charBuf, nomfichier.length()+1);
   
    Serial.println(nomfichier);
    //---- crée fichier en écriture ---
    file = SD.open(charBuf, FILE_WRITE); // ouvre le fichier en écriture
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 332
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

pourquoi ne pas coder le nom du fichier en C plutot qu'en C++ ?
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 127
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Euh j'ai fait ca moi ?  smiley-eek
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ca veut dire "Pourquoi utiliser la classe String plutot que rester avec des char[] ?"

La classe String est attirante parce qu'elle propose un certain nombre de fonctions utiles mais :
- les fonctions ne sont pas exhaustives et c'est compliqué si tu veux l'étendre
- le classe string est basé sur de la gestion de mémoire dynamique ce qui peut rapidement devenir problématique sur un micro avec peu de mémoire

De plus il semble que le compilo fournit avec Arduino (WinAVR 2009) comporte pas mal de bug concernant la gestion de mémoire dynamique.

Donc il est préférable de se passer autant que possible de la classe String.

Code:
char charBuf[13]; // 8+'.'+3+'\0' = 13
nbrefichier = nbrefichier + 1;
sprintf("%08d.txt", charBuff, nbrefichier );
Serial.println(charBuff);
//---- crée fichier en écriture ---
file = SD.open(charBuf, FILE_WRITE); // ouvre le fichier en écriture
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Sr. Member
****
Karma: 0
Posts: 332
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

attention barbudor, sprintf ne s'utilise pas comme ça.
c'est sprintf(charDest, "ma tambouille avec le formatage %d %s", les, variables)

Code:
sprintf(charBuff, "%08d.txt", nbrefichier );
Logged

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

exact, j'ai inversé les 2 premiers paramètres
veuillez pardonner cette erreur due à mon grand age smiley-lol
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Full Member
***
Karma: 0
Posts: 127
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci à tous
voici le code qui fonctionne en fonction de ce que vous m'avez dit

Je vais taguer le poste comme résolu !  smiley

Code:
// Mise en forme du nom du fichier .txt 
char datafile[13];
int jour=day();
int mois = month();
int heure= hour();
int minut= minute();

sprintf(datafile,"%02d%02d%02d%02d.txt",mois,jour,heure,minut);  //  %d pour un int
 
     //----- initialisation de la carte SD -----
    Serial.println( (__FlashStringHelper *)PSTR("Initialisation de la SD card..."));

    SD.begin(brocheSDCardSelect); // initialisation de la carte SD avec broche 4 en tant que CS - renvoie true/false
   
   
   
    Serial.println(datafile);
    //---- crée fichier en écriture ---
    file = SD.open(datafile, FILE_WRITE); // ouvre le fichier en écriture
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Question juste comme ça, pourquoi :
Code:
Serial.println( (__FlashStringHelper *)PSTR("Initialisation de la SD card..."));

Et non tout simplement :
Code:
Serial.println(F("Initialisation de la SD card..."));
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Ile-de-France (92 sud), France
Offline Offline
Edison Member
*
Karma: 24
Posts: 2055
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je crois que je suis le fautif  smiley-fat
Je connaissais PSTR et _FlashStringHelper mais pas F() que j'ai trouvé récemment
J'ai donc orienté PITP2 la dessus....
Logged

Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Offline Offline
Full Member
***
Karma: 0
Posts: 127
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La question est est ce que cela fait que l'on gagne un peu d'espace mémoire supplémentaire ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je crois que je suis le fautif  smiley-fat
Je connaissais PSTR et _FlashStringHelper mais pas F() que j'ai trouvé récemment
J'ai donc orienté PITP2 la dessus....
F() c'est juste le cast tout fait :
Code:
#define F(string_literal) (reinterpret_cast<__FlashStringHelper *>(PSTR(string_literal)))

La question est est ce que cela fait que l'on gagne un peu d'espace mémoire supplémentaire ?
Non mais ça fait des caractères en moins à écrire et ça fait plus propre smiley-mr-green
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: 1 [2]   Go Up
Jump to: