picoC für Linux und Windows inkl. Entwicklungshilfe für Skripte
Die IT-Welt ist doch sehr heterogen. Um den Zugang zu picoC weiter zu vereinfachen, habe ich die Sourcen nochmals compiliert: Einmal für Linux und einmal für Windows. Die Downloads dazu gibts im Artikel inkl. einer kurzen Beschreibung, wie man seine Skripte ein wenig besser debuggen kann. Aber denk daran: picoC erdet und ist nicht megaC… 😉
Bei der Verwendung von Loxmock in der Skript-Entwicklung für meine Loxone-Umgebung wollte ich noch mehr Möglichkeiten zur Fehlersuche haben.
Zunächst einmal zu picoC. Die Version aus dem Loxwiki ist doch etwas alt, eingeschränkt und instabil in bestimmten Situationen. Deshalb habe ich es flugs selbst compiliert(der gleiche Codestand). Die Versionen für Linux und Windows finden sich unten zum Download.
Zum Debuggen seiner eigenen Skripte kann man natürlich entsprechende Ausgaben einbauen und mittels Start/Stop immer wieder laufen lassen. Funktioniert. Aber z.B. beim Nachstellen von Szenarien die sich zur Laufzeit ergeben können, wird es dann schon komplizierter. Etwas einfacher wäre es doch, wenn man seine Werte zur Laufzeit an bestimmten Stellen beeinflussen könnte. Wie das geht, beschreibe ich nachstehend. Die Vorgehensweise funktioniert sowohl unter Windows als auch unter Linux.
Gesteuerte Werteänderungen zur Laufzeit
Zunächst einmal: Das Ganze funktioniert natürlich nur sinnvoll, wenn das Skript in einer Dauerschleife iteriert.
Während der lokalen Ausführung hat man nun folgende 3 Steuerungsmöglichkeiten mit Tastenkombinationen:
| Unterbrechen | Ctrl-C |
| Fortsetzen | Ctrl-D |
| Beenden | Ctrl-4 |
Ich zeige das mal anhand des folgenden Beispielcodes, mit mindestens v02 des Loxmock. Der Code iteriert so lange, bis über den Eingabekanal 0 der Wert -1 übergeben wird.
#include "loxmock.c"
while (TRUE) {
float myvar = getinput(0);
if (myvar == -1)
exit(0);
setoutput(8, myvar);
sleep(4000);
}
Wird der Code nun ausgeführt (picoc.exe -s myscript.c) und der Loxmock wurde nicht konfiguriert, so liefert getinput(0) immer den Wert 0 zurück(Endlosschleife) und bei den sleep()-Statements wird auch nicht gewartet.
In der Simulation soll über den Eingabekanal 0 aber nun -1 gesetzt werden. Dazu sagen wir dem Loxmock, dass er bitte bei den sleep()-Statements auch tatsächlich warten soll. Damit bleibt dann auch die Zeit, an der richtigen Stelle mittels Ctrl-C zu unterbrechen. Dann setzen wir manuell den Wert am Eingangskanal auf -1: lm_setinput(0, -1); und lassen das Ganze mit Ctrl-D weiterlaufen. Im nachstehenden Bild etwas hübscher aufbereitet – gerne daraufklicken. 🙂

Wer mag – picoC zum Download
picoC für Linux
In ein Verzeichnis entpacken und das Readme lesen
picoC für Windows
In ein Verzeichnis entpacken und das Readme lesen. Die Windows-Version wurde unter cygwin compiliert.
Wie immer gilt: Fortschritt, nicht Perfektion… Feedback ist also jederzeit willkommen.
