Servus , wer kann mir helfen den Code zu verstehen, while(numNewMessages) Telegram Bot Endlosschleife ! void loop() { if (millis() > lastTimeBotRan + botRequestDelay) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while(numNewMessages) { Serial.println("got response"); handleNewMessages(numNewMessages); numNewMessages = bot.getUpdates(bot.last_message_received + 1); } lastTimeBotRan = millis(); } Danke
:
Verschoben durch Moderator
706231 1. schrieb: > wer kann mir helfen den Code zu verstehen, > while(numNewMessages) https://en.cppreference.com/w/cpp/language/while
706231 1. schrieb: > Servus , wer kann mir helfen den Code zu verstehen,
1 | //Irgendeine Funktion mit dem namen "loop" ohne Parameter oder Rückgabewert
|
2 | void loop() |
3 | {
|
4 | if (millis() > lastTimeBotRan + botRequestDelay) |
5 | //Falls der Rückgabewert der Funktion millis() größer als die Summe der Variablen "lastTimeBotRan" und "botRequestDelay" ist, führe aus:
|
6 | {
|
7 | int numNewMessages = bot.getUpdates(bot.last_message_received + 1); |
8 | //Deklaration einer neuen, lokalen Variable mit dem Namen "numNewMessages" vom Typ "int"
|
9 | //Aufrufen der Funktion "getUpdates" aus der Klasse "bot", mit dem um 1 inkrementierten Wert der Variablen "last_message_received" aus der Klasse "bot", als Parameter
|
10 | //Initialisieren von "numNewMessages" mit dem Rückgabewert.
|
11 | while(numNewMessages) |
12 | //Führe aus, solange "numNewMessages" größer als 0 ist:
|
13 | {
|
14 | Serial.println("got response"); |
15 | //Rufe die Funktion "println" aus der Klasse "serial" mit dem string "got response" auf => vmtl. Ausgabe desselben auf eine serielle Schnittstelle
|
16 | handleNewMessages(numNewMessages); |
17 | //Aufrufen der Funktion "handleNewMessages" mit dem Wert der Variablen "numNewMessages"
|
18 | numNewMessages = bot.getUpdates(bot.last_message_received + 1); |
19 | //siehe oben
|
20 | }//while ende |
21 | lastTimeBotRan = millis(); |
22 | //Zuweisen des Rückgabewertes von milis() an eine Variable "lastTimeBotRan"
|
23 | }//if ende |
24 | // syntax error
|
:
Bearbeitet durch User
Die Kommentare sollten eigentlich schon in dem Originalcode stehen. Warum schreiben so viele Leute ihren Code ohne Kommentare?
PittyJ schrieb: > Die Kommentare sollten eigentlich schon in dem Originalcode > stehen. > Warum schreiben so viele Leute ihren Code ohne Kommentare? Weil Kommentare dieser Art völlig sinnlos sind. Oliver
PittyJ schrieb: > Die Kommentare sollten eigentlich schon in dem Originalcode stehen. > Warum schreiben so viele Leute ihren Code ohne Kommentare? Weil der Code mit etwas Übung sehr einfach zu lesen ist. Wenn im Kommentar das Selbe steht, wie im Code dann fügt er (der Kommentar) keinen Nutzen hinzu. Im Gegenteil: der Leser muss ständig den Kommentar mit dem Code abgleichen.
Oliver S. schrieb: > PittyJ schrieb: >> Die Kommentare sollten eigentlich schon in dem Originalcode >> stehen. >> Warum schreiben so viele Leute ihren Code ohne Kommentare? > > Weil Kommentare dieser Art völlig sinnlos sind. > > Oliver Ach? Wir haben den Satirischen Ansatz vom Franz M. erkannt?
Franz M. hat alles richtig gemacht! Gut beschrieben was passiert! Der OP wollte die Zeieln erklärt haben, das hat @elmo64 perfekt getan! 👍 Einen guten Wochenstart euch allen!
Nasenbaer schrieb: > Der OP wollte die Zeieln erklärt haben, das hat @elmo64 perfekt getan! Nein. - Er verwechselt Deklaration mit Definition. - Er verwechselt Klasse und Objekt. - Eine Methode bezeichnet er fälschlich als Funktion. - Argumente bezeichnet er fälschlich als Parameter. - "numNewMessages" wird nicht auf größer Null getestet, sondern auf ungleich Null.
Nasenbaer schrieb: > Der OP wollte die Zeieln erklärt haben, das hat @elmo64 perfekt getan! Nein. Der TO wollte verstehen, was der Code macht, und das hat elmo64 nicht erklärt. Der hat nur in zudem noch unpräziser Prosa das wiederholt, was da als C-Code schon steht. Wie gesagt, ist so etwas völlig sinnlos. Oliver
Hallo, ich korrigiere noch den Logikfehler mit dem Zeitvergleich und alles ist in Butter. Ansonsten stimmt das bei/nach einem Überlauf nicht mehr.
1 | if (millis() - lastTimeBotRan >= botRequestDelay) { |
2 | int numNewMessages = bot.getUpdates(bot.last_message_received + 1); |
3 | |
4 | while (numNewMessages) { |
5 | Serial.println("got response"); |
6 | handleNewMessages(numNewMessages); |
7 | numNewMessages = bot.getUpdates(bot.last_message_received + 1); |
8 | }
|
9 | lastTimeBotRan = millis(); |
10 | }
|
Mehr kann ich zu dem Schnipsel dazu nicht sagen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.