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

Bonjour à tous,
j'avais pour idée de stocker des données sur une carte SD sur un format .CSV (séparateur smiley-wink

Quote
Nbreimpulsion;Millis;Heure;Minute;Seconde;Jour;Mois;Annee
0;2546;19;34;44;28;10;2012;
1;122545;19;36;44;28;10;2012;
1;242545;19;38;44;28;10;2012;
1;362547;19;40;45;28;10;2012;
1;482547;19;42;45;28;10;2012;
1;602549;19;44;45;28;10;2012;
1;722549;19;46;45;28;10;2012;
1;842551;19;48;45;28;10;2012;
1;962551;19;50;45;28;10;2012;


je me demande pour plus de flexibilité d'échange avec d'autres systèmes si je ne devrais pas mieux utiliser le format XML.

J'ai regardé comment le formater mais avant de faire des conneries pouvez vous me donner un exemple de manière de formater les données de façon correct et est ce que je pars dans la bonne direction en utilisant xml ?
« Last Edit: November 01, 2012, 11:00:34 am by PITP2 » Logged

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

vu la nature des infos, faire un xml serait vraiment se casser les pieds... surtout qu'il faudra coder soit même les fonctions...

Mais enregistrer au format xml n'est pas bien compliqué. Ce qui serait plus ennuyeux, serait de coder le parser qui permet de les lire (sur l'arduino).
Logged

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

En fait j'ai vu dans un autre post que c'était faisable de parser du XML avec un arduino

Et l'utilisation du XML est pour pouvoir utiliser les donnes avec un autre système

Par contre en effet cela risque de donner un truc de compliqué ...
le XML n'est peut etre pas fait pour ce genre de stockage puis de restitution
Logged

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

Salut,

Je suis entièrement d'accord avec Vohu ! Et puis le CSV est également très courant et peut être exploité simplement par de nombreuses applications. Que comptes-tu faire de ce fichier au juste ?

++
Logged


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

En fait je désire envoyer l'information de "production" toutes les X minutes à un serveur.
Si l'envoie se passe bien alors je ne stockerai pas la valeur sur l'arduino.
Par contre si la transmission échoue je stocke sur la carte SD puis cycliquement je retenterai un envoie au serveur.

Ces pour cette partie cyclique que je trouvait que la structure XML pouvait m'aider à retrouver les donner pour les renvoyer au serveur et puis pourquoi pas ensuite acceder au données par une carte arduino qui afficherait la valeur en "temps réel" sur un afficheur déporté ou sur une page Web.

Mais d'après ce que vous dites cela ne semble pas le XML le plus adpaté.
Logged

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

C'est surtout que l'Arduino reste limité et que le XML est relativement lourd. Etant donné que les données à gérer sont simples, autant faire simple smiley-wink
Logged


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

moi j'aurai gardé le format csv, mais, si tu veux faire un xml, c'est pas compliqué.

Il suffit d’appeler une fonction du genre :

Code:
ecrireblocXML(nomduBloc, info1, info2, info3...)
{
     sprintf(bloc, "<%s>\n", nomduBloc);
     sprintf(bloc, " %s   <info1>%s</info1>\n", bloc, info1);
     sprintf(bloc, " %s   <info2>%s</info2>\n", bloc, info2);
     sprintf(bloc, " %s   <info3>%s</info3>\n", bloc, info3);
     sprintf(bloc, "</%s>\n", bloc);

    file.write(bloc);
}



attention, j'ai pas testé, il manque l'initialisation des variables, les types, et j'ai pas tenu compte des pointeurs (et sans doute plein de choses encore), c'est pour te montrer l'idée... Il faut aussi faire 2 fonctions qui appellées au bon moment écriront l'entête du xml et sa fin. et voilà, le tour est joué.

Faut pas oublier qu'un arduino n'a pas beaucoup de place en mémoire...

Mon dernier projet qui utilisait la carte SD et ethernet en même temps m'a obligé à nettoyer radicalement mon programme.. car il n'y avait plus assez de place... sur 32Ko, je crois qu'il était  meme conseillé de ne pas dépasser le 30Ko...
Faire une fonction qui écrit du xml, t'oblige à écrire beaucoup de chaines de caractères dans ton programme... Et ça, ça prends malheureusement beaucoup de place...
Logged

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

-1 aussi pour le XML
En plus un fichier XML est plus compliqué a gerer en ajout
Il faut quasiment le ré-écrire entièrement à chaque ligne que tu veux ajouter.

Garder le CSV sur l'Arduino est plus simple.
Au serveur de faire la conversion si besoin, il aura plus de puissance pour cela.
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

Bon et bien devant votre enthousiasme avec mon idée de XML et bien je vais l'abandonner !
et continuer avec mon format csv même si cela semble plus galère pour identifier les données à renvoyer au serveur après.
De plus est ce possible de supprimer uniquement une ligne dans le fichier ou est ce que l'on doit stocker tout le fichier en mémoire puis supprimer la ligne que l'on désire et enfin tout réécrire ?
Logged

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

bienvenue dans le monde du C.

Effectivement, changer une ligne en C, consiste à réécrire tout le fichier, avec la ligne modifiée, ou, sans cette ligne si on veut la supprimer.

Sur le serveur, il n'y aura aucun problème à identifier les données, puisqu'elles restent dans le même ordre pour chaque ligne. Ca sous entend évidement, que si une valeur d'une ligne devait être omise, il doit quand même apparaître une  valeur vide dans le CSV, soit 2 virgules qui se suivent. Si non, il y aura un décalage lors de la lecture.



Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Etant donné la nature des données stockées dans ton CSV, le XML ne t'apporterait rien à par des cheveux blancs en créant les fonction sur l'Arduino.
Faire un petit script sur le serveur (coté PC) qui te le passe en XML te posera nettement moins de soucis.
Logged

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

Bonjour,

+1 pour l'avis général, le format CSV est bien mieux.

Surtout que même côté serveur le format CSV est plus simple à gérer que du XML.
Pour parser du CSV il faut faire un découpage de chaine de caractère ligne par ligne, c'est 3x rien à coder.
Pour parser du XML il faut prendre en compte l'architecture du fichier, l'encodage, ...

Pour ce qui est du renvoi des données "offline" c'est pas compliqué, comme elles sont toute dans un ordre chronologique il te suffit d'envoyer toutes les données du fichiers en une seule fois.
Le problème c'est que tu ne peut pas enlever une ligne bien précise dans un fichier sans tout lire / réécrire.
Donc si l'envoi du fichier complet échoue tu auras des problèmes pour gérer la situation.

Le mieux serait de faire un dossier avec un fichier par trame à émettre, numéro dans un ordre croissant, une sorte de file d'attente d'envoi avec des fichiers.
Tu envois fichier par fichier dans l'ordre, si ça marche tu supprime le fichier, si ça plante tu laisse le fichier en place pour la prochaine fois.
Logged

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

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

du coup, s'il fait un fichier par ligne... et qu'il supprime les fichiers qui ont étés envoyés, il n'y a plus de problème :o
Logged

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

Je vais partir dans ce sens yapluka comme on dit  smiley
par contre qu'elle est la limite du nombre de fichier sur la carte SD ?
Logged

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

en fat 16:
65 524 fichier sur la partition, et apparement 512 fichier à la racine (en ne dépassant pas le nomage en 8.3) par contre, je ne sais pas de ce qu'il en est dans un autre dossier...

Je ne sais pas s'il est possible de lire la fat32 (qui est bien moins limitative) avec la librairie sd
Logged

Pages: [1] 2   Go Up
Jump to: