Forum: Mikrocontroller und Digitale Elektronik Arduino Code schnelles testen ohne Microcontroller


von Diagonal D. (diagonal)


Lesenswert?

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);
}

von Falk B. (falk)


Lesenswert?

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.

von Diagonal D. (diagonal)


Lesenswert?

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...?

von Wolfgang (Gast)


Lesenswert?

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

von Diagonal D. (diagonal)


Lesenswert?

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 ?

von Falk B. (falk)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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 ;-)

von Nick M. (Gast)


Lesenswert?

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.

von Pandur S. (jetztnicht)


Lesenswert?

> delay(5000);

Aaahhhhh ... schon verloren. Das wird so nichts mehr.

von Schuppeste (Gast)


Lesenswert?

Wo verstreicht die Zeit, beim kompilieren

Diagonal D. schrieb:
> ich vermute das die Bibliotheken lange brauchen...?

Nur das kompilieren oder der Upload?

von Schuppeste (Gast)


Lesenswert?

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.

von Diagonal D. (diagonal)


Lesenswert?

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
von vmodellxp (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Schuppeste (Gast)


Lesenswert?

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

von confused (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

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?

von HansImLot (Gast)


Lesenswert?

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...

von confused (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.