INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schleife erzwingen von vorne durchzulaufen
17.09.2015, 19:15
Beitrag #1
Schleife erzwingen von vorne durchzulaufen
Hallo. Ich möchte in einer Bedingung im Sketch gerne erzwingen, dass die Schleife von vorne durchlaufen wird, ohne dass dabei aber der Arduino resettet wird. Geht das? Ich meine mich daran erinnern zu können, davon mal gelesen zu haben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.09.2015, 20:18
Beitrag #2
RE: Schleife erzwingen von vorne durchzulaufen
Hallo,
die Schleife hat doch einen Zähler. Dann frage in der Schleife mit eine if-Anweisung eine Bedingung ab und wenn diese zutriff, setzt du den Schleifenzähler wieder auf Anfang.

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.09.2015, 21:57
Beitrag #3
RE: Schleife erzwingen von vorne durchzulaufen
(17.09.2015 19:15)scritch schrieb:  Hallo. Ich möchte in einer Bedingung im Sketch gerne erzwingen, dass die Schleife von vorne durchlaufen wird, ohne dass dabei aber der Arduino resettet wird. Geht das? Ich meine mich daran erinnern zu können, davon mal gelesen zu haben.

Von welcher Schleife sprichst du hier?
Die "Loop" oder eine eigene Schleife in der Loop?

Du könntest z.B. "Goto Name" einsetzen, ist zwar nicht sehr gern gesehen, aber funktioniert.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.09.2015, 05:34
Beitrag #4
RE: Schleife erzwingen von vorne durchzulaufen
Hi. Ich meine die Hauptschleife. Wieso ist die Methode nicht gern gesehen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.09.2015, 05:58
Beitrag #5
RE: Schleife erzwingen von vorne durchzulaufen
@scritch
Zitat:Ich möchte in einer Bedingung im Sketch gerne erzwingen, dass die Schleife von vorne durchlaufen wird...
Ich meine die Hauptschleife...
Irgendwie ist die Frage nicht eindeutig formuliert Huh Die loop() wird doch sowieso immer von vorn durchlaufen.
Vielleicht solltest du mal in "Pseudocode" schreiben was passieren soll.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.09.2015, 07:28 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2015 07:39 von scritch.)
Beitrag #6
RE: Schleife erzwingen von vorne durchzulaufen
Sorry wenn ich mich missverständlich ausgedrückt habe. Hier mal ein Beispielcode:

Code:
int var1;
int var2;

loop(){ // Hauptschleife

f_irgendwas();
//tue dies
//mache das

switch(var1){
  case 1:
    f_irgendwas();
    //irgendwas das lange dauert zu durchlaufen
    break;

  case 2:
    f_irgendwas();
    //irgendwas das lange dauert zu durchlaufen
   break;

  case 3:
    f_irgendwas();
    //irgendwas das lange dauert zu durchlaufen
    break;
  }
}

void f_irgendwas(){
  if(bedingung erfüllt){
    var1 = 1; //, 2 oder 3
  }
}

Nachdem die Funktion aufgerufen wurde und zurück in das switch-case gekehrt wird, wird dort erstmal z. B. eine weitere Schleife durchlaufen, was viele andere Dinge im Skript verzögern würde. Wenn jetzt z. B. case 1 durchlaufen wird, wird auch die Funktion aufgerufen. Sofern eine Bedingung erfüllt wurde, soll der Rest aus case 1 nicht mehr durchgeführt werden, und die Schleife soll von vorne beginnen um so jetzt z. B. case 2 durchalaufen zu können, ohne die große Verzögerung die in case 1 nach dem Funktionsaufruf vorhanden wäre.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.09.2015, 08:05 (Dieser Beitrag wurde zuletzt bearbeitet: 18.09.2015 08:08 von hotsystems.)
Beitrag #7
RE: Schleife erzwingen von vorne durchzulaufen
(18.09.2015 05:34)scritch schrieb:  Hi. Ich meine die Hauptschleife. Wieso ist die Methode nicht gern gesehen?

Ich bin vor einiger Zeit auf der Suche nach diesem Befehl auf einen entsprechenden Hinweis gestoßen, kann diesen allerdings aktuell nicht wieder finden.
In VB ist es sehr gebräuchlich und in C/C++ wohl auch noch:

https://www.arduino.cc/en/pmwiki.php?n=Reference/Goto

Also ich setze ihn auch in einigen Projekten ein, weil es so einfach ist, eine Schleife zu verlassen und an einen genau definierten Punkt zu springen.

Edit:

Und aus welchen Gründen dauert deine Routine in "Switch" so lange? Das wäre auch noch mal wichtig zu wissen.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.09.2015, 09:11
Beitrag #8
RE: Schleife erzwingen von vorne durchzulaufen
Hi,
ich würde mich auch gern am Ratespiel beteiligen. Wie wär's mit "return", also ungefähr so:
Code:
switch(var1){
   case 1:
     f_irgendwas();
     if(irgendeine Bedingung) return;
     //irgendwas das lange dauert zu durchlaufen
     break;
Erklärung: return verlässt die aktuelle Funktion. In dem Fall ist das die Funktion loop. Die Arduino-Hauptroutine ruft loop dann gleich wieder auf.
Falls nach dem Switch noch irgendwas kommen sollte, dann geht das ganze auch mit "break", also in etwa so:
Code:
loop(){ // Hauptschleife

// [...]
switch(var1){
   case 1:
     f_irgendwas();
     if(irgendeine Bedingung) break;
     //irgendwas das lange dauert zu durchlaufen
     break;

   case 2:

     // [...]

   }
   irgendeinefunktiondieaufjedenfallausgefuehrtwerdensoll();
}
Erklärung: break beendet die aktuelle Schleife (for, while) bzw. das aktuelle switch. Es springt also in dem Fall auf den ersten Befehl nach dem switch-Block.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  while Schleife nach sleep mode interrupt tklaus 13 238 23.11.2016 17:40
Letzter Beitrag: Tommy56
  Do-While-Schleife Abbruchbedinung Majera 14 241 22.11.2016 18:07
Letzter Beitrag: Pit
  Schleife Hannes 3 188 16.11.2016 00:54
Letzter Beitrag: Hannes
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 486 01.04.2016 05:49
Letzter Beitrag: MartinK
  for - Schleife #elextro19 6 706 27.03.2016 13:21
Letzter Beitrag: #elextro19
  Aus While-Schleife durch Interrupt aussteigen Zill3 10 1.175 08.02.2016 16:28
Letzter Beitrag: ardu_arne
  Kann ich in eine For Schleife einen delay einbauen JanGamer11 6 610 05.01.2016 12:34
Letzter Beitrag: Hilgi
  digitalRead in einer Schleife luto92 5 829 15.10.2015 22:09
Letzter Beitrag: hotsystems
  Schleife wiederholen diode1990 1 752 07.08.2015 20:34
Letzter Beitrag: Thorsten Pferdekämper
  AnalogRead aus Loop-Schleife auskoppeln dna5544 7 1.470 16.07.2015 12:31
Letzter Beitrag: dna5544

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste