essayer / attraper le bloc dans Arduino
Je suis en train de travailler avec la prise de la communication dans l'Arduino, et j'ai besoin de le bloc try/catch pour sa bonne gestion, de quoi avez-vous les gars? Mes recherches sur internet n'a pas réussi.
edit:
Le code, je travaille avec utilise le WiFly module d'interagir avec une application mobile, je suis à la construction d'un robot module avec certains contrôles sur l'application mobile avec Android.
Tout fonctionne bien, mais parfois la prise débranchée, j'ai donc besoin d'ajouter le traitement de tels cas, quelque chose de semblable à bloc try/catch, mais je n'ai pas retrouver le même bloc pour Arduino.
Mon code:
void loop() {
Client client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
//Serial.print("client connected \n");
char c = client.read();
if(c == 'L')
turnLeft();
if(c == 'R')
turnRight();
if(c == 'F')
goForward();
if(c == 'B')
goBackward();
if(c == 'S')
Stop();
Serial.print(c);
}
}
//give the web browser time to receive the data
delay(100);
client.stop();
}
}
source d'informationauteur NZal
Vous devez vous connecter pour publier un commentaire.
La Arduino de référence est pas d'inscription
try catch
(pour les détails de pourquoi voir, par exemple, ce liées répondre). Et je suppose que la mise en œuvre try catch sur un µ-contrôleur pourrait être un peu difficile/impossible.Try catch dans la plupart des langues est assez cher de l'opération: Le programme de la pile d'avoir copié une fois pour le bloc try et pour chaque bloc catch. Dans le cas où l'essai va mal le essayez-le bloc de pile seront écartés l'un de l'attraper bloc de piles sera exécuté.
Je ne suis pas un expert de l'architecture du processeur, mais j'imagine que cela doit beaucoup d'échange de mémoire et d'autres opérations similaires — il devrait être difficile à réaliser avec un simple µ-contrôleur.
modifier
Il pourrait la peine de regarder comment C-les Programmeurs de faire des modèles similaires à try/catch
Arduino ne prend pas en charge la gestion des exceptions. Cependant, vous n'avez pas besoin d'utiliser des exceptions pour rendre votre code robuste. En cochant simplement les valeurs de retour des fonctions qui peuvent échouer, vous pouvez atteindre la même fin.
Depuis
client.connected()
est vérifiée chaque fois autour de la boucle, et depuisclient.available()
sera de retour 0 si pas connecté le seul défaut qui n'est pas déjà traitée est le retour declient.read()
.Vous pouvez résoudre ce problème, par exemple, par la modification de la ligne:
: