Mouais va bien falloir que je réinitialise tout ça... un jour :sifle:
Quand on tape, par exemple : - ) , celui là fonctionne mais quand on prend ceux déjà, eux ils ne s'affichent pas
ZebulonMembre, Modérateur, Administrateur, Admin. Tête à l'envers...
Morgane utilise simplement un live CD pour récupérer tes données !
LOL, parce que dis comme ça tu crois qu'elle va savoir ?
Un live, elle va savoir.
Un CD, elle va savoir.
Un Live CD, ça va devenir plus compliqué...
:sifle: :sifle: :sifle:
Oui, enfin moi je réponds à sa question, je ne fais pas de hors sujet (vouloir lui réparer son ordi, alors qu'elle ne veux juste que récupérer ses photos et jeter son ordi ... )
Et puis Google est ton ami .....
ZebulonMembre, Modérateur, Administrateur, Admin. Tête à l'envers...
Morgane utilise simplement un live CD pour récupérer tes données !
LOL, parce que dis comme ça tu crois qu'elle va savoir ?
Un live, elle va savoir.
Un CD, elle va savoir.
Un Live CD, ça va devenir plus compliqué...
:sifle: :sifle: :sifle:
Oui, enfin moi je réponds à sa question, je ne fais pas de hors sujet (vouloir lui réparer son ordi, alors qu'elle ne veux juste que récupérer ses photos et jeter son ordi ... )
Et puis Google est ton ami .....
Parce que mon ordi n'est pas réparable chef. Enfin ça me coûtera les yeux de la tête :!:
Alors oui Google est devenu mon ami parce que tu ne voulais pas m'expliquer bande de vilain. On parle pas tous informatique tous les jours :x
Ben du coup grâce à vous j'ai démonté le disque dur de mon ancien pc dans la foulée j'ai été l'emmené chez le dépanneur qui m'a transféré tout mes docs et photos sur ma clé usb. J'ai payé 30€.
Ben du coup grâce à vous j'ai démonté le disque dur de mon ancien pc dans la foulée j'ai été l'emmené chez le dépanneur qui m'a transféré tout mes docs et photos sur ma clé usb. J'ai payé 30€.
Ah merci de ton témoignage.
Je vais m'occuper de ça la semaine prochaine
Mon problème est résolu :
J'ai fait reset du tél pour rien car le problème ne venait pas de moi mais des mes interlocuteurs qui n'avaient pas mis leur clavier en automatique
Mon problème est résolu :
J'ai fait reset du tél pour rien car le problème ne venait pas de moi mais des mes interlocuteurs qui n'avaient pas mis leur clavier en automatique
Tous tes interlocuteurs ? ça fait beaucoup de coïncidence non ? (Enfin si c'était que une ou deux personnes ça va, mais sinon je pense pas que la cause soit réellement ça ou du moins ça m'étonne fortement ^^ )
Sinon quelqu'un s'y connait bien niveau programmation Arduino ?
Car je galère sur une simple procédure vu que je suis en stage... :!:
J'ai jamais programmé dessus mais j'ai déjà fait de la progra sur des microcontroleur (j'ai même fait de l'assembleur mais bon ça on oublie vite), mais il me semblait que le Arduino était un dérivé du C, ça y ressemble vachement non ?
Au pire, tu peux toujours poser ta question en MP, on sait jamais
je souhaite lire un fichier de données (format xml ou txt) à partir de l'Arduino.
Ma procédure consiste à lire le fichier ligne par ligne.
Or je n'arrive pas à détecter un retour à la ligne. Pourtant la simple requête suivante devrait convenir mais non :
Vérifie ce que retourne réellement la fonction read(), Elle ne doit pas prendre un seul caractère, si tu prends un chaine entière, ta comparaison ne peut pas fonctionner. Il faudrait parcourir ta chaine, lire caractère à caractère, et comparer à ce moment là.
Si tu as d'autres questions , passes en MP, on évitera d'embêter trop les autres, sinon on va sur un forum dédié
ZebulonMembre, Modérateur, Administrateur, Admin. Tête à l'envers...
04:49 modifié
Bah, vu la vie trépidante de ce sujet, aucun problème pour que vous restiez zizi, mais c'est vous qui voyez comme dirait l'autre...
Sauf que la fonction read() ne doit pas être complètement optimisée pour lire une ligne aussi longue pour pouvoir détecter un retour charriot.
J'ai inclus des Serial.println("1") afin de savoir si je rentre dans telle ou telle boucle et ça coince à la détection de retour charriot
et stocker les String dans un tableau incrémentable pour pouvoir réécrire ce tableau dans un fichier txt basé sur la carte SD du shield Ethernet de l'Arduino.
En faite j'ai un fichier auto.txt (qui liste des tags NFC) basé sur la SD de l'Arduino que je souhaite mettre à jour, toutes les X minutes, à partir d'un autre fichier auto.txt basé sur un serveur distant. Sauf que j'avais pensé à faire un simple download de ce fichier pour le stocker sur la SD mais cette fonction n'est pris en compte nulle part dans les ibrairies Arduino.
edit : mon fichier auto.txt basé sur mon serveur web est généré via une page php
et stocker les String dans un tableau incrémentable pour pouvoir réécrire ce tableau dans un fichier txt basé sur la carte SD du shield Ethernet de l'Arduino.
En faite j'ai un fichier auto.txt (qui liste des tags NFC) basé sur la SD de l'Arduino que je souhaite mettre à jour, toutes les X minutes, à partir d'un autre fichier auto.txt basé sur un serveur distant. Sauf que j'avais pensé à faire un simple download de ce fichier pour le stocker sur la SD mais cette fonction n'est pris en compte nulle part dans les ibrairies Arduino.
edit : mon fichier auto.txt basé sur mon serveur web est généré via une page php
C'est un autre soucis que t'as ou t'es toujours sur le même problème ?
Ok.
D'abord j'ai vu qu'on pouvait faire des trucs comme ça :
int x;
String str;
void loop()
{
if(Serial.available() > 0)
{
str = Serial.readStringUntil('\n');
x = Serial.parseInt();
}
}
Le readStringuntil pourrait t'être utile ^^
Ensuite, le code que tu avais fourni au début ne peut pas fonctionner car tu essayes d'utiliser read() sur un client qui n'est pas un buffer (comme l'utilisation avec Serial).
Pour terminer je vois pas en quoi l'utilisation du code fournis sur le lien que je t'ai donné n'est pas adaptable à ton cas ? Quel est le problème que ce soit sur un serveur distant ? Tant que tu es connecté et que tu récupère l'adresse de ton fichier, ça devrait pouvoir fonctionner. Il suffit de donner le chemin d'accès complet avec le nom du serveur et tout et tout ?
C'est justement car la fonction read() n'est pas optimisé. Car dès que le read() détecte le \n, il va se remettre directement au début du fichier. Bon après c'est dans mon cas car je suis pas un pro Arduino haha.
Merci pour la fonction readStringUntil je vais regarder ça
ZebulonMembre, Modérateur, Administrateur, Admin. Tête à l'envers...
04:49 modifié
Tu es sur pour le "/n", ne devrais-tu pas tester le "/r" plutôt ?
Tu es sur pour le "/n", ne devrais-tu pas tester le "/r" plutôt ?
Apparemment c'est lui qui insère les "/n" donc je ne suis pas sur que ça soit le problème.
Mais c'est quand même une bonne idée dans le cas où ce n'est pas lui ^^
Pour vérifier quels sont les caractères entrés, avec notepad ++, dans view -> Show symbols -> show all characters , tu pourras les voir
Tu es sur pour le "/n", ne devrais-tu pas tester le "/r" plutôt ?
C'est vrai que pour éditer mon fichier txt sur mon serveur j'utilise une page php qui génère le texte à partir d'une bdd et que pour chaque retour chariot j'écrit un "\r\n" sinon php ne prendrait pas en compte le "\n".
Sauf que étant donnée que c'est l'arduino qui doit détecter le retour chariot, et que le "\n" est après le "\r" de toute façon, il n'y a pas besoin de faire une détection de quelconque "\r".
Cela dit j'ai eu une idée lumineuse au travail ce matin :
En exécutant une requête GET conduisant à une page php codée comme :
<?php
$file ="auto.txt";
//Affichage du fichier texte au complet;
readfile($file);
?>
J'obtiens de meilleur résultat en codant simplement mon programme Arduino de la manière suivante :
if (client.connect(server, 80)) {
client.println(maj);
//client.print(F("Host : "));
//client.println(server);
client.println();
delay(100);
SD.remove("auto.txt");
delay(100);
newFile = SD.open("auto.txt", FILE_WRITE);
delay(100);
if (newFile) {
if(client.available()) {
c = client.read();
while(c != '#') {
Serial.print(c);
newFile.print(c);
delay(1);
}
}
newFile.println('#');
newFile.close();
}
}
else Serial.println("La MAJ a echoue !");
client.stop();
Réponses
Quand on tape, par exemple : - ) , celui là fonctionne mais quand on prend ceux déjà, eux ils ne s'affichent pas
Je suis épuisé, moi, tout d'un coup...
LOL, parce que dis comme ça tu crois qu'elle va savoir ?
Un live, elle va savoir.
Un CD, elle va savoir.
Un Live CD, ça va devenir plus compliqué...
:sifle: :sifle: :sifle:
:fouet: :fouet: :x :x
Et puis Google est ton ami .....
Parce que mon ordi n'est pas réparable chef. Enfin ça me coûtera les yeux de la tête :!:
Alors oui Google est devenu mon ami parce que tu ne voulais pas m'expliquer bande de vilain. On parle pas tous informatique tous les jours :x
Ah merci de ton témoignage.
Je vais m'occuper de ça la semaine prochaine
J'ai fait reset du tél pour rien car le problème ne venait pas de moi mais des mes interlocuteurs qui n'avaient pas mis leur clavier en automatique
Tous tes interlocuteurs ? ça fait beaucoup de coïncidence non ? (Enfin si c'était que une ou deux personnes ça va, mais sinon je pense pas que la cause soit réellement ça ou du moins ça m'étonne fortement ^^ )
Car je galère sur une simple procédure vu que je suis en stage... :!:
J'ai jamais programmé dessus mais j'ai déjà fait de la progra sur des microcontroleur (j'ai même fait de l'assembleur mais bon ça on oublie vite), mais il me semblait que le Arduino était un dérivé du C, ça y ressemble vachement non ?
Au pire, tu peux toujours poser ta question en MP, on sait jamais
je souhaite lire un fichier de données (format xml ou txt) à partir de l'Arduino.
Ma procédure consiste à lire le fichier ligne par ligne.
Or je n'arrive pas à détecter un retour à la ligne. Pourtant la simple requête suivante devrait convenir mais non :
void updateAutorisations() {
EthernetClient client;
char c;
String maj = "GET /trucmuchmachinchose.txt HTTP/1.1";
if (client.connect(server, 80)) {
client.println(maj);
client.print(F("Host : "));
client.println(server);
client.println();
if(client.available()) {
c = client.read();
if(c == '\n') {
[...]
}
}
}
}
else Serial.println("La MAJ a echoue !");
client.stop();
}
Si tu as d'autres questions , passes en MP, on évitera d'embêter trop les autres, sinon on va sur un forum dédié
<nfc>12345678910</nfc>
<nfc>112233445566</nfc>
<nfc>665544332211</nfc>
Sauf que la fonction read() ne doit pas être complètement optimisée pour lire une ligne aussi longue pour pouvoir détecter un retour charriot.
J'ai inclus des Serial.println("1") afin de savoir si je rentre dans telle ou telle boucle et ça coince à la détection de retour charriot
Je comprend pas bien cette phrase, tu as inclus des 1 dans ton fichier pour te repérer ?
Sinon je viens de regarder la syntaxe de read, il lit un seul bytes donc pour moi la boucle fonctionne toujours sauf qu'il y en aura deux.
J'ai trouvé ce lien : http://stackoverflow.com/questions/5697047/convert-serial-read-into-a-useable-string-using-arduino
c'est pas ça que tu veux faire ?
Ce que je voudrais en faite c'est enregistrer chaque ligne par exemple <nfc>12345678910</nfc> en remplacant les balises <nfc> et </nfc> par rien.
Chose simple : tag.replace("<nfc>", ""); tag.replace("</nfc>", "");
et stocker les String dans un tableau incrémentable pour pouvoir réécrire ce tableau dans un fichier txt basé sur la carte SD du shield Ethernet de l'Arduino.
En faite j'ai un fichier auto.txt (qui liste des tags NFC) basé sur la SD de l'Arduino que je souhaite mettre à jour, toutes les X minutes, à partir d'un autre fichier auto.txt basé sur un serveur distant. Sauf que j'avais pensé à faire un simple download de ce fichier pour le stocker sur la SD mais cette fonction n'est pris en compte nulle part dans les ibrairies Arduino.
edit : mon fichier auto.txt basé sur mon serveur web est généré via une page php
C'est un autre soucis que t'as ou t'es toujours sur le même problème ?
Aahhhh parce que je commençais à plus comprendre où on en était, mais du coup le lien que je t'ai filé t'a aidé ?
D'abord j'ai vu qu'on pouvait faire des trucs comme ça :
Le readStringuntil pourrait t'être utile ^^
Ensuite, le code que tu avais fourni au début ne peut pas fonctionner car tu essayes d'utiliser read() sur un client qui n'est pas un buffer (comme l'utilisation avec Serial).
Pour terminer je vois pas en quoi l'utilisation du code fournis sur le lien que je t'ai donné n'est pas adaptable à ton cas ? Quel est le problème que ce soit sur un serveur distant ? Tant que tu es connecté et que tu récupère l'adresse de ton fichier, ça devrait pouvoir fonctionner. Il suffit de donner le chemin d'accès complet avec le nom du serveur et tout et tout ?
Merci pour la fonction readStringUntil je vais regarder ça
Apparemment c'est lui qui insère les "/n" donc je ne suis pas sur que ça soit le problème.
Mais c'est quand même une bonne idée dans le cas où ce n'est pas lui ^^
Pour vérifier quels sont les caractères entrés, avec notepad ++, dans view -> Show symbols -> show all characters , tu pourras les voir
C'est vrai que pour éditer mon fichier txt sur mon serveur j'utilise une page php qui génère le texte à partir d'une bdd et que pour chaque retour chariot j'écrit un "\r\n" sinon php ne prendrait pas en compte le "\n".
Sauf que étant donnée que c'est l'arduino qui doit détecter le retour chariot, et que le "\n" est après le "\r" de toute façon, il n'y a pas besoin de faire une détection de quelconque "\r".
Cela dit j'ai eu une idée lumineuse au travail ce matin :
En exécutant une requête GET conduisant à une page php codée comme :
<?php
$file ="auto.txt";
//Affichage du fichier texte au complet;
readfile($file);
?>
J'obtiens de meilleur résultat en codant simplement mon programme Arduino de la manière suivante :
if (client.connect(server, 80)) {
client.println(maj);
//client.print(F("Host : "));
//client.println(server);
client.println();
delay(100);
SD.remove("auto.txt");
delay(100);
newFile = SD.open("auto.txt", FILE_WRITE);
delay(100);
if (newFile) {
if(client.available()) {
c = client.read();
while(c != '#') {
Serial.print(c);
newFile.print(c);
delay(1);
}
}
newFile.println('#');
newFile.close();
}
}
else Serial.println("La MAJ a echoue !");
client.stop();
Je commence à voir le jour c'est bon signe
void updateAutorisations() {
EthernetClient client;
String c;
String maj = "GET /sca/client.php";
String tag;
if (client.connect(server, 80)) {
client.println(maj);
// client.println(F("Host : "));
// client.println(server);
// client.println(F("User-Agent: arduino-ethernet"));
// client.println(F("Connection: close"));
client.println();
SD.remove("auto.txt");
newFile = SD.open("auto.txt", FILE_WRITE);
delay(100);
if (newFile) {
if(client.available()) {
c = client.readStringUntil('#');
Serial.print(c);
newFile.print(c);
newFile.println();
delay(100);
}
newFile.println('#');
newFile.close();
}
}
else Serial.println("La MAJ a echoue !");
client.stop();
}
Merci beaucoup Manon pour ton aide et grâce à la fonction readStringUntil
C'est cool quand on a réussi ^^ C'est ce que je kiff dans la prog, chercher et enfin ... trouver
Du coup, t'es en stage pour combien de temps là ?