Bonjour, je suis actuellement en terminal S SI et ait donc un PPE a faire, moi et mes camarade avons choisie de faire un store pilotable depuis une application mobile.
Nous avons choisie d'utilisée une carte Arduino, celle ci doit:
- Récupéré un flux RSS dans lequel sera inscrit "ouvert" ou "fermé".
- Si l'information est "ouvert" on ouvre le store dans le cas contraire on le ferme
le store possède des capteurs pour connaitre sa position "ouvert" "fermé" ou "intermédiaire", les capteur renvoi cette information a l'Arduino.
- L'Arduino reçoit les info des capteurs et envoie dans la base de donné du site l’état du volet "ouvert" "fermé" ou "intermédiaire"
Aucun de nous ne connait la programmation C/C++ malheureusement, si l'un de vous pouvez m'aider a réalisé ce programme ça me permettrai de faire un démonstration pendant la soutenance (on possède la carte.
J'ai trouver déjà ce programme sur internet pour récupéré le flux RSS mais le compilateur Arduino trouve plusieurs erreurs :
le programme
// déclarer l'objet qui contiendra les données RSS
Channel channel;
void setup() {
// lors de la création de la chaine, on passe l'adresse du flux RSS
channel = new Channel(this, "http://www.assemblee-nationale.fr/rss/rss_presse.xml");
channel.on_screen();
}
class Channel {
String title, description;
Cri[] cris = new Cri[0]; // créer une liste de Cri vide (chacun avec titre,date,descriptif)
Channel(PApplet app, String s) {
XMLElement document;
try {
document = new XMLElement(app, s);
}
catch (Exception e) {
println(" erreur ):" + e);
return;
}
if (!document.getStringAttribute("version").equals("2.0")) return;
if (0 == document.getChildCount() && !document.getChild(0).getName().equals("channel")) return;
XMLElement channel = document.getChild(0);
int nombre_items = channel.getChildCount();
for (int i = 0; i < nombre_items; i++) {
XMLElement enfant = channel.getChild(i);
if (enfant.getName().equals("title")) {
// chercher le titre (son contenu)
title = enfant.getContent();
}
if (enfant.getName().equals("description")) {
// chercher le descriptif
title = enfant.getContent();
}
// on a trouvé un <item> (ce qui nous intéresse)
if (enfant.getName().equals("item")) {
String titre;
String date;
String descriptif;
// créer des variables temporaires pour les données qui nous intéressent
try {
titre = enfant.getChild("title").getContent();
}
catch (Exception e) {
titre = "";
println(e);
}
try {
date = enfant.getChild("pubDate").getContent();
}
catch (Exception e) {
date = "";
println(e);
}
try {
descriptif = enfant.getChild("description").getContent();
}
catch (Exception e) {
descriptif = "";
println(e);
}
cris = (Cri[])append( cris, new Cri(titre, date, descriptif) );
}
}
}
void on_screen() {
// le debugger
// s'il n'y a pas eu de données
if (0 == cris.length) {
println("Je n'ai pas pu me connecter au flux rss");
return;
}
// sinon demander à chaque donner de s'afficher
for(int i=0; i < cris.length; i++) {
cris[i].read();
}
}
class Cri {
String titre, date, descriptif;
// le constructeur de chaque CRI
Cri(String _titre, String _date, String _descriptif) {
titre = _titre;
date = _date;
if (null == _descriptif) descriptif = "";
else descriptif = _descriptif;
}
// dessiner cette dépêche
void read() {
println(titre);
println(date);
println(descriptif);
println("------------------------------------------------------");
}
}
}
les erreurs :
sketch_apr03a:1: error: 'Channel' does not name a type
sketch_apr03a.cpp: In function 'void setup()':
sketch_apr03a:6: error: 'channel' was not declared in this scope
sketch_apr03a:6: error: expected type-specifier before 'Channel'
sketch_apr03a:6: error: expected `;' before 'Channel'
sketch_apr03a.cpp: At global scope:
sketch_apr03a:14: error: ISO C++ forbids declaration of 'Cri' with no type
sketch_apr03a:14: error: expected ';' before 'cris'
sketch_apr03a:16: error: expected `)' before 'app'
sketch_apr03a:135: error: expected `}' at end of input
sketch_apr03a:135: error: expected unqualified-id at end of input
Si quelqu'un pouvait m'aider a debuger ce programme et faire le second pour récupérer les informations des capteurs.
#include <SPI.h> // Librairie SPI pour la communication hardware
#include <Ethernet.h> // Librairie Ethernet
byte mac[] = { // Adresse MAC (n'importe quelle adresse fait l'affaire)
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(10, 0, 0, 19); // Adresse IP du serveur distant (ici mon serveur web local)
EthernetClient client; // Objet EthernetClient
// setup()
void setup() {
Serial.begin(9600); // Initialisation du port série
if (!Ethernet.begin(mac)) { // Opbtention d'une adresse IP par DHCP
Serial.println("Erreur DHCP");
for(;;); // En cas d'erreur on bloque le programme dans une boucle infini
}
Serial.println("DHCP OK");
}
// loop()
void loop()
{
String str; // Chaine de char contenant une ligne de la réponse HTTP
char c;
delay(10000); // Delai entre deux requétes
if (client.connect(server, 80)) { // Connexion au serveur web
client.println("GET /flux.xml HTTP/1.0"); // Demande de flux.xml en HTTP 1.0
client.println();
}
else {
Serial.println("Erreur TCP"); // Si erreur lors de la connexion
return; // quitte loop()
}
for(;;) { // Boucle infini
if(client.available()) { // Si des données son disponible sur l'objet EthernetClient
c = client.read(); // Lecture d'un octet
if(c == '\n') { // Si fin de ligne atteinte
// (Pensez à mettre une ligne vide à la fin de flux.xml)
if(str.startsWith("<action>")) { // Si la ligne commence par <action>
str.replace("<action>", ""); // Enléve les balises XML
str.replace("</action>", "");
Serial.println(str); // Affiche la valeur du noeud XML
// ... TODO
break; // Sort de la boucle infini
}
str = ""; // Vidage de la ligne
}
else
str += c; // Concaténation de l'octet recu dans la chaine de char
}
if(!client.connected()) // Si la connexion a été perdu
break; // Sorti de la boucle infini
}
client.stop(); // Fermeture de la connexion avec le serveur
}
salut je suis entrain de faire un projet sur la surveillance de l'activite cardiaque via liaison ethernet base sur l'arduino est ce que il y'a la possibilite de me aider pour le code source
On l'a dit et répété si tu veux de l'aide sur un sujet qui n'est pas le même que celui de l'OP alors fais ton propre sujet et on viendra t'y aider avec plaisir ! (surtout que là bonjour le déterrage de topic ! (mais au moins ca aurait tendance à montrer que tu as fais des recherches, donc un bon point ! )
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Retrouvez moi sur mon blog et ma chaine Youtube !
Retrouvez moi sur mon blog et ma chaine Youtube !