Nachwuchs in der Familie!

Ein guter und sozial anerkannter Grund, reduzierte Tätigkeiten zu begründen, liegt ja darin, auf neu hinzugekommenen Nachwuchs hinzuweisen. Und das möchte ich hiermit in aller Form tun!

Und neinneinneinneinnein: Bitte keine Glückwünsche! Meine persönliche Familienplanung ist lange abgeschlossen, mein Sohn lässt wohlgeraten bald das Teenageralter hinter sich. Die Familie, um die es hier geht, ist die der Xojo-Erweiterungsbibliotheken. Und auch wenn sie noch in den Kinderschuhen stecken, möchte ich ihre Geburt hiermit doch endlich auch kundtun:

OSXLib

Color Extension
Das Farbmodul bindet sich transparent in Xojo-OSX-Projekte ein. Soll nicht bei diesem einen Modul bleiben.

Da wären einmal die schon ewig lange versprochene Mac OS X-Bibliothek. Nachdem ich auf der Xojo-Konferenz in Koblenz in aller hektischen Kürze über die Grundlagen von NSTableView, dem extrem leistungsfähigen nativen großen Bruder der Listbox referierte und ich dort ohnehin ein Video versprach, möchte ich dies bald auch auf Deutsch nachholen. Auf der Konferenz habe ich dafür die MBS-Plugins verwendet, was in diesem Rahmen (nochmals Dank an die wirklich sehr angenehme und konversationsstiftende Umgebung, die Christian Schmitz mit scheinbar leichter Hand wohldurchdacht organisiert hat!) auch völlig ok war.

Hier bin ich allerdings schon mehrfach gebeten worden, nach Möglichkeit kostenlose Lösungen zu besprechen. Und da die altehrwürdige MacOSLib in 64Bit-Tagen schwächelt, heißt das neue Kind nun OSXLib. Allzu umfangreich ist sie noch nicht, da ich mich entschlossen habe, eben doch nicht einfach nur iOSLib zu portieren. Deren größter Kritikpunkt ist die Verknüpftheit der Klassen untereinander. Soll heißen, sie ist auf dem besten Wege dazu, ein Monolith à la MacOSLib zu werden, bei der das Friss-oder-Stirb-Prinzip gilt: Entweder man installiert alles zusammen in seinem Programm, oder man verzichtet drauf. Ein Aussortieren nicht benötigter Bestandteile, um den Programmcode zu entschlacken, ist schwer bis gar nicht möglich.

OSXLib geht daher einen anderen Weg: Ein (zugegeben recht umfangreiches) Kernmodul stellt den Kern da, ohne den’s nicht geht. Alles andere findet sich in einer optionalen Ordnerstruktur, hierarchisch nach Vererbungen sortiert, damit man nicht versehentlich eine Superklasse rauswirft. Das sieht dann in etwa so aus:

OSXLib structure

Freilich: Momentan kann man noch keine Riesengeschichten erwarten. Ich kann aber vieles portieren, bemühe mich dabei aber gleich noch um einen besseren Klassenaufbau. Der TableView fehlen aktuell noch die Events, aber in den Grundzügen ausprobieren kann man sie schon mal. Leider noch recht unkomfortabel. Convenience-Methoden und Properties für die Xojo-Klasse, wie sie beim obigen Farb-Beispiel schon vorhanden sind, werden folgen.

Und klarer Fall, dass diese Struktur dann auch irgendwann in iOSLib Einzug finden wird.

 

pigpioLib

Aus dem Namen will man erst mal irgendwelche Schweinereien herauslesen, oder? Also mir geht das nach wie vor so, und ich verhaspele mich auch dauernd beim Code-Tippen. Trotz alledem ist das hier eine ganz ernsthaft gemeinte Bibliothek, und zwar für Raspberry-Pi-Entwickler.

Der besitzt ja den ungemein vielseitigen GPIO, den General Purpose Input/Output Port. Dank Paul Lefebvre’s GPIO-Blibliothek lässt er sich auch seit Anbeginn der Xojo-Raspi-Unterstützung nutzen. Mittlerweile wurde aber ein neues Framework für den GPIO ins Raspbian-Betriebssystem aufgenommen, nämlich pigpio. Merke also: Kein Borstentier bei der Aussprache andeuten; es ist die Pi-GPIO-Bilbiothek.

Und die ist ungleich viel leistungsfähiger und komfortaber. Da es sie für Xojo noch nicht gab und ich immer noch hoffe, eine pure Raspberry-Pi-Lösung für die Ansteuerung einer Neopixel-LED-Kette zu finden, gibt es nun also auch piogioLib.

Wie üblich gab es Diskussionen darüber, dass darin Dinge unterstützt werden, die Xojo gar nicht unterstützt. So die Weiterverarbeitung von Daten, die per Pin-Level-Change-Interrupt, also dem Wechsel des Zustands eines gpio-Pins, auf einem Hintergrundthread hereinkommen. Meine Erfahrung, und die einiger anderer Programmierer, ist die: Das geht durchaus. Man darf dabei allerdings keine Objekte adressieren oder erzeugen. Datentypen schon, und durch direkte Verwendung der externenen Declares innerhalb der eventähnlichen Methode lässt sich dann z.B. eine LED per Interrupt eines Schalters ein- und ausschalten. Nun ja: Das könnte man auch ganz ohne Computerbeteiligung realisieren, zugegeben. Eine LED kann fraglos rein elektrisch hinter einem Taster hängen. Nehmen Sie das Demoprojekt daher bitte als Anregung für weitaus fortgeschrittene Steuer- und Regelungsprojekte!

Foto Raspi + Wetter
Gut gemeint und doch miserabel fotografiert: Internet-Wetterbericht auf einem Raspberry Pi-getriebenen Display. Mit pigpioLib auch mit richtigem Gradzeichen!

 

Größenwahn, Herr Evangelist?

Also insbesondere was iOSLib und OSXLib angeht, weiß ich selbst sehr gut, dass diese Bibliotheken außerhalb der Möglichkeiten einer einzelnen Person liegen. Deshalb liegt das alles auch als Repository auf Github, und ich freue mich über jede Form von Unterstützung bei der Entwicklung frei verfügbarer Xojo-Bibliotheken. Jeder Pull Request wird wohlwollend begutachtet, versprochen!

Z. B. für CoreBluetooth, das in OSXLib integriert ist und die Kommunikation mit den all gerade schwer angesagten Gesundheitsgeräten (uff. Das klingt in Übersetzung doch ziemlich nach der Maschine mit dem Ping, also in Neudeutsch: Health Devices) ermöglicht, trägt Ronald Stolk seit einiger Zeit eifrig zur weiteren Erschließung bei. Bedankt!

 

And one more thing

Ich zuppele mir mal den dunkelgrauen Rollkragenpulli zurecht und strafe obigen Absatz stante pede Lügen: Eine Sache hab ich noch, nämlich eine noch inoffizielle Erweiterung für iOSLib: SceneKit! Auch hier noch nicht vollständig und deshalb nur im Development-Branch zu finden. Ich hoffe, demnächst Scene- und SpriteKit in OSXLib zu portieren, um damit vielleicht die noch recht brachliegende Spieleentwicklung mit Xojo ein wenig anzukurbeln. Und ja: Für ernsthafte Simulationen lassen sich die Frameworks auch verwenden.

SK iOSLib
Noch nicht vollständig und noch etwas buggy (und im Simulator alles andere als rasant): SceneKit für die einfache animierte 3D-Programmierung.

 

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s