Arrêter le programme en cas d'erreur.

Bonjour à tous,

Quelle commande devrais je utiliser pour stopper mon programme en cas d'erreur ?

Pour mon module d'ouverture de porte de garage et pour des raisons de sécurité, je souhaite qu'en cas d'erreur dans le chargement du fichier de configuration l'exécution du code s'arrête.

J'ai pensé utiliser la commande "break" mais cela s'utilise dans une boucle.

Merci pour votre aide.

Strappal: ... je souhaite qu'en cas d'erreur dans le chargement du fichier de configuration l'exécution du code s'arrête.

bonjour Je ne comprend pas "bien" ce que tu veux dire et souhaite faire 8)

Lorsque tu upload/verse un "nouveau programme" l'execution du programme prealablement chargé est interrompue par le reset puisque c'est le bootloader qui prend la main.

expose mieux "ton probleme"

Oups...

Effectivement, à la lecture de mon propre message, je m'aperçois qu'il était un peu court.

Je code actuellement un interrupteur pour ma porte de garage motorisée. Cet interrupteur peut ouvrir la porte via un interrupteur, via un navigateur web (shield ethernet), via téléphone bluetooth.

Les variables de sécurité et de configuration (mot de passe, clé de sécurité) sont chargées depuis un fichier sur la carte SD.

Voici une partie du code gérant la connexion à la carte SD :

if (!SD.begin(4)) { // Gère les erreurs Serial.println("Erreur de carte SD !"); for(;; ); }

Il y a toute une partie qui gère le fichier de configuration, les variables, etc... Le codage complet continue et est en cours.

Ce que je souhaiterais, c'est que si une erreur intervient dans un processus de test (en l'occurence, ici) le programme se stoppe et ne poursuive plus son exécution sans rechargement possible autrement qu'en appuyant sur le bouton reset de l'arduino ou en débranchant rebranchant l'arduino.

J'espère être un peu plus clair dans ma demande.

J'avais pensé à utiliser la commande "pause" mais cela ne fait que mettre en pause le programme. Je cherche une commande qui stoppe vraiment l'exécution définitivement.

Cette commande n'existe peut être tout simplement pas. Je suis peut être trop exigeant et je me retournerai vers une boucle infinie dans ce cas.

Merci de votre aide.

PS : Jusqu'à présent, je n'ai codé que de petites applications simple. Je ne possède qu'une faible expérience et il me semble être déjà, dans ce cas, dans une boucle infinie mais je me trompe peut être.

et pourquoi faire que s'il y a une erreur, mettre une boucle infini du genre

while(true) {
    delay(10);
}

ou

while(true)

ou

while(1)

ou alors essayer avec :

exit(0);

Bonsoir, oui, j'y pensais effectivement. Ou alors, j'envisageais un "reset" logiciel mais je ne sais pas comment coder cela...

Exécution du code en cas d'erreur, redémarrage du code... Quelqu'un saurais me dire si cela est possible ?

Strappal: Bonsoir, oui, j'y pensais effectivement. Ou alors, j'envisageais un "reset" logiciel mais je ne sais pas comment coder cela...

Exécution du code en cas d'erreur, redémarrage du code... Quelqu'un saurais me dire si cela est possible ?

http://arduino103.blogspot.fr/2013/06/comment-un-reset-darduino-par-logiciel.html

soit en appelant la fonction setup ou alors avec ceci : asm volatile(" jmp 0");

Il me semble que le Watchdog sert aussi a ça.