c4ev3 wurde bereits ausführlich vorgestellt und wie dort bereits erwähnt, gibt es ein paar Kleinigkeiten die noch nicht zu 100 % funktionieren. Im Folgenden werden wir diese einzeln auflisten.
Handling mit Eclipse
- „echo.exe“ muss für Eclipse nachinstalliert werden. Wünschenswert wäre es, wenn die ARM-Build Tools auch durch den Installer installiert werden und den Pfad in den Systemvariablen automatisch gesetzt würde.
- Nachträgliches Ändern des Zielspeichers ist nicht möglich. Wurde in der Voreinstellung ein Speicherort gesetzt gibt es keine praktikable Möglichkeit den Speicherort einfach auf einen anderen zu ändern (außer im Startcode Änderungen vorzunehmen).
- Nur microSD-Karten werden unterstützt. Die Speicherorte USB-Stick und Interner Speicher, funktionieren nur über die Schaltfläche „Upload and Run“. Dies ist deutlich Umständlicher, da so immer ein PC nötig ist, um das Programm zu starten.
- Verbinden des EV3s per Bluetooth klappt aktuell nicht.
- Upload des Programms per WLAN bricht ab.
Programmieren in C4EV3
- Endlosschleifen wie while(true){} führen zum Aufhängen des Roboters. Somit muss man eine eigene Abbruchbedingung implementieren. Dafür kommen in erster Linie die EV3-Tasten in Frage. Problematisch wird es jedoch schon bei zweien Tasten:
- Die Mitteltaste startet das Programm ist also beim Programmstart gedrückt was zum sofortigen terminieren des Programms führt.
- Die Zurücktaste funktioniert zwar, jedoch interpretiert der EV3 nach zweimaligem Beenden des Programms dies als Aufforderung sich herunterzufahren.
- Das nächste Problem entsteht dadurch, dass man nun selbst den EV3 mit einer Taste aus der Schleife holen muss. Soll der EV3 zum Beispiel endlos lang im Quadrat fahren, wird die Länge der geraden und die kurven mit dem Befehl wait() justiert. Das führt dazu, dass die Abbruchbedingung nur nach jedem schleifen Durchgang beendet werden kann, welcher durch wait() ein sehr enges Zeitfenster bekommt darum muss man die Abbruchtaste gedrückt halten bis die Schleife erneut abfragt. Insgesamt unpraktisch für Programme die permanent wait() aufrufen und mehr als zwei Sekunden in Summe pro Schleifendurchlauf warten.
Da die Möglichkeit von Timern für den µC fehlen, ist keine andere Lösung möglich. Wünschenswert wären hier eine permanente von C4EV3 vorgegeben Abbruchbedingung mit der Zurücktaste (wie von Lego® selbst). Dann wären auch Endlosschleifen kein Problem mehr. - Töne funktionieren aktuell nicht, da die Funktionen nicht gefunden werden. Das liegt daran, dass im aktuellen API Paket welches durch den Installer installiert wird, die Datei ev3_sound.h nicht in der ev3.h Datei per „#include“ eingebunden wurde.
Sensoren
- Hat man mehrere Sensoren angeschlossen, benötigt jedoch nur einen und implementiert daher den Modus „NO_SEN“ für die nicht benötigten Sensoren, werden die nicht benötigten Sensoren über die Laufzeit des Programms hinaus deaktiviert. So funktioniert nach dem Terminieren des Programms der EV3-Menüpunkt View nicht mehr mit den durch „NO_SEN“ deaktivierten Sensoren. Erst ein erneutes aus- und einstecken der betroffenen Sensoren führt dazu das diese wieder angesprochen werden können.