Hallo zusammen, ich möchte für mein Esp01 geschriebenen Arduino Code schnell testen wollen, d.h. das kompilieren und uploaden auf den ESP01 nimmt bei mir sehr viel Zeit in Anspruch, wenn ich kleine Änderungen am Code testen möchte dauert mir das recht lange, frage wäre ob Ihr mir einen Emulator(o.ä) empfehlen könnt um mein Code schnell zu testen ( ohne Physischen Bezug auf z.B. eine LED oder dergleichen), hier ein Beispielcode: void loop() { HTTPClient http; http.begin("http://waschmaschine.fritz.box/getStatus"); //Specify the URL int httpCode = http.GET(); String payload = http.getString(); Serial.print(httpCode); //Make the request if (httpCode > 0) { //Check for the returning code Serial.println("SAUBER ********************************************"); } else { Serial.println("ERROR ********************************************"); } http.end(); //Free the resources delay(5000); }
Diagonal D. schrieb: > ich möchte für mein Esp01 geschriebenen Arduino Code schnell testen > wollen, d.h. das kompilieren und uploaden auf den ESP01 nimmt bei mir > sehr viel Zeit in Anspruch, wenn ich kleine Änderungen am Code testen > möchte dauert mir das recht lange, Wie lange denn? > frage wäre ob Ihr mir einen > Emulator(o.ä) empfehlen könnt um mein Code schnell zu testen ( ohne > Physischen Bezug auf z.B. eine LED oder dergleichen), hier ein > Beispielcode: Und du meinst der ist schneller gestartet? Vielleicht solltest du deine Teststrategie überprüfen.
das hochladen und starten dauert ca. 30 sek., ich nutze gerade das Heltec Modul mit dem 0.9 zoll display, ich vermute das die Bibliotheken lange brauchen...? Teststrategie ist, daten von openweather per HTTP client abrufen und am Display formatiert ausgeben...?
Diagonal D. schrieb: > ... wenn ich kleine Änderungen am Code testen > möchte dauert mir das recht lange, frage wäre ob Ihr mir einen > Emulator(o.ä) empfehlen könnt um mein Code schnell zu testen ( ohne > Physischen Bezug auf z.B. eine LED oder dergleichen) ... Eher solltest du vielleicht deine Entwicklungsstrategie ändern und nur per Unit-Test (z.B. mit Unity) verifizierten Code in deine Anwendung einbauen. http://www.throwtheswitch.org/unity
bei Syntaktischem Check ist das ja wunderbar, bei HTTP Clients muss man schon die Abfrage ausführen um das Ergebnis und die weiter Verarbeitung begutachten zu können.... Mal die Frage anders gestellt, gibt es evtl. einen einfachen Emulator ( online oder offline) mit dem ich zumindest den HTTP Client austesten könnte ?
Diagonal D. schrieb: > Teststrategie ist, daten von openweather per HTTP client abrufen > und am Display formatiert ausgeben...? Das ist keine Teststrategie, das ist dein Projektziel. Eine Teststrategie ist z.B. drei Zeichen im Quelltext ändern, neu compilieren, hochladen und schauen was rauskommt. Keine sonderlich sinnvolle allerdings. Die Frage ist, wie man sinnvolle Änderungs- und Testzyklen macht. Wieviel Änderung sollte man minimal und maximal machen, bevor man wieder einen Upload auf den Controller macht. Was kann man dann auf dem Controller wie testen? Hast du einen Debugger? Was kann der? Das sind wichtige Fragen zu Teststrategie.
Diagonal D. schrieb: > Mal die Frage anders gestellt, gibt es evtl. einen einfachen Emulator ( > online oder offline) mit dem ich zumindest den HTTP Client austesten > könnte ? Mach es anders. Minimiere dein Programm auf das zu testende Modul mit minimalerm Drumherum. Dann geht vermutlich der Upload deutlich schneller. Überleg mal wie das die Leute in der "guten, alten Zeit" gemacht haben, als man noch mit EPROMs (ja, nur ein E) arbeiten mußte! Da dauerte das Löschen mit UV-Licht viele Minuten und auch das Brennen war nervig, denn man mußte den IC aus der Fassung ziehen und ind den Programmieradapter stecken. Jaja, irgendwann gab es SRAM-Basierte Entwicklerboards, da ging das deutlich schneller. Jedenfalls mußte man sich damal SEHR viewl Gedanken machen, wie man das gescheit testet, OHNE jedesmal den EPROM zu brennen. War aber alles vor meiner Zeit ;-)
Diagonal D. schrieb: > Teststrategie ist, daten von openweather per HTTP client abrufen > und am Display formatiert ausgeben...? Wenn es am Ablauf mit dem HTTP-Gedöns liegt, dann mach es doch direkt auf dem PC in C. Da hast du kürzere Umlaufzeiten. Lass das GUI komplett weg, printf genügt für sowas. Ansonsten wie Andere schruben. Unittest, bessere Teststrategie. Vor allem letzteres ist sehr lehrreich für größere Projekte. Irgendwann wird der Aufwand eine bestimmt Situation zu erzeugen so lästig, dass man sich schon längst was besseres überlegen hätte sollen. Also, zurücklehnen, nachdenken und besser machen.
> delay(5000);
Aaahhhhh ... schon verloren. Das wird so nichts mehr.
Wo verstreicht die Zeit, beim kompilieren Diagonal D. schrieb: > ich vermute das die Bibliotheken lange brauchen...? Nur das kompilieren oder der Upload?
Ups, zu früh abgeschickt.. Ich benutze zum Testen von Arduino Code einen einfachen Mega2560 als Simulator.. das braucht 2 Sekunden für kompilieren und Upload. Gegebenfalls kann man bei alten bzw. Langsamen Rechnern mit Arduino ToGo auf einer Ramdisk arbeiten. Das waren bei meinem alten Laptop eine reduzierung der Kompilierung von 60 auf 20 Sekunden.
Schuppeste schrieb: > Ich benutze zum Testen von Arduino Code einen einfachen Mega2560 als > Simulator.. das braucht 2 Sekunden für kompilieren und Upload. meinst du mit Simulator das du eine Mega2560 angeschlossen hast und als Simulator verwendest, oder gibt es einen in Arduino hinterlegten Software Simulator ? ich denke ich werde es erst einmal mit einem ESP01 testen, das geht auch relativ schnell, dann wenn der code sauber getestet ist übertrage ich es dann auf den Heltec... Ja, eine TestStrategie ist sicher sinnvoll, aber nicht für so ein "mini" Projekt--> "mit Kanonen auf Spatzen schiessen", die TestStrategie ist hier auch nicht sinnvoll, da ich primär das parsen des Json Objektes programmieren und testen wollte...
:
Bearbeitet durch User
Diagonal D. schrieb: > da ich primär das parsen des Json Objektes > programmieren und testen wollte... Und genau dafür gibt es Unittests. Solltest du dir mal ansehen... Z.B.: https://docs.platformio.org/en/latest/plus/unit-testing.html https://github.com/bxparks/AUnit Gerade dein konkreter Anwendungsfall kann doch ohne Probleme direkt auf dem Entwicklungsrechner getestet werden.
Falk B. schrieb: > Mach es anders. Minimiere dein Programm auf das zu testende Modul mit > minimalerm Drumherum. Dann geht vermutlich der Upload deutlich > schneller. Der Umfang des hochzuladenden Codes wird wahrscheinlich eher durch das ganze Klimmbimm der ESP8266 Grundfunktionen verursacht und nicht durch den Arduino Code. Was da alles eingebunden wird, ist unter der Arduino IDE gar nicht sichtbar.
Diagonal D. schrieb: > ich denke ich werde es erst einmal mit einem ESP01 testen Der funktioniert aber völlig anders. Ein erfolgreicher Test auf idesem Ding hat für deine Zielanwendung kaum Aussagekraft. Dur wirst keinen Emulator finden, der auch noch die Ethernet Hardware emulieren kann. Das ist viel zu speziell. Algorithmen kannst du gut auf dem PC ausführen und testen, aber sobald Hardware mit ins spiel kommt, führt kaum ein Weg daran vorbei, auf der Hardware zu testen. Das ist die Welt von JTAG.
Stefan ⛄ F. schrieb: > Der funktioniert aber völlig anders. Ist ja die Frage was man Testen möchte. Wenn ich ein aufwendiges Multibutton Menü für den ESP32 schreiben möchte, kann ich in Arduino auch einen AVR Arduino nehmen und Blitzschnell darauf lostippeln und testen. Beim TO geht es wohl um Json Parsing etc.. das würde auch gehen. Einen http Request in einen String packen und dann den Teil fertig machen würde auch gehen, bzw habe ich auch schon gemacht
Hallo, ich glaub du suchst eine andere IDE. Mit Visual Studio Code und Platform IO geht das bauen schneller, weil er nicht immer alles baut sondern sich schon gebautes archiviert. Kannst das ja mal Probieren. So sind compilierzeiten von ~2 min (mit Arduino IDE) gegen 30 Sekunden bei Visual Studio Code.
confused schrieb: > ich glaub du suchst eine andere IDE. Mit Visual Studio Code und Platform > IO geht das bauen schneller, weil er nicht immer alles baut sondern sich > schon gebautes archiviert. Kannst das ja mal Probieren. Das macht die Arduino-IDE auch. Sooo doof ist die nicht. >So sind compilierzeiten von ~2 min (mit Arduino IDE) gegen 30 Sekunden >bei Visual Studio Code. Wofür braucht man 2min Compilerzeit bei der Arduino IDE? Was für ein Riesenprojekt wird das?
Letzte Woche habe ich das erste mal mit Arduino was gemacht, war bisher immer in den nativen IDEs für AVR und STM unterwegs. Mir ist schon in der ersten Stunde aufgefallen, was es für einen Unterschied in der benötigten Zeit zum kompilieren macht, ob ich einen Arduino Uno oder ein nicht-Arduino Board (STM32 Nucleo über die STM32 Library eingebunden), verwende. Vermutlich weil über eine weitere Schicht übersetzt werden muss. Und dabei war es auch nur ein Hello World LED blinken...
Falk B. schrieb: > Wofür braucht man 2min Compilerzeit bei der Arduino IDE? Was für ein > Riesenprojekt wird das? Das stell ich blad mal vor wenn ich fertig bin. Die Alpha Version läuft schon ;) Sind über 3k Zeilen Code ohne die eingebundenen Libs... Da ist der unterscheid zu Arduino IDE und Visual Studio Code mit Plattform IO derbe. Hatte immer den Eindruck, dass die Arduino IDE alles immer neu macht und alte Sachen wegschmeißt.. Gruß
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.