Wie man eine Binäruhr strickt (Teil 1)
Es gibt doch tatsächlich Menschen, die sich dafür interessieren, wie ich das gemacht habe. Naja. Dann wollen wir mal :D.
Eines vorweg: 3,95$ (soviel kostet so manche Binäruhr für Windows Mobile) sind gemessen am Aufwand Wucher.
Wie eine Binäruhr funktioniert
Grundlegend für das Programmieren einer solchen Uhr ist natürlich das Verständnis, wie man binär Zeit darstellen kann. Und ganz wichtig dafür ist wiederum, welche Darstellung man sonst bevorzugt.

Ein kleines Beispiel: Wenn wir eine Zeit in Schriftform sehen, bevorzugen wir in aller Regel die Form hh:mm:ss, also z.B. 15:43:26. Wir können Zeit aber auch als Zeitraumdifferenz in Millisekunden zwischen heute und dem 01. Januar 1970 darstellen. Wie eine Binäruhr später also aussieht, hängt eigentlich nur vom eigenen Geschmack und der Phantasie, wie man Zeit darstellen kann, ab.
Meine Binähruhr geht den folgenden Weg:
Als Grundlage wird die Darstellung hh:mm:ss genutzt. Jede Stelle wird durch einen Balken mit mehreren Elementen (mind. 2, max. 4) abgebildet. Jedes Element bildet wiederum eine Zweierpotenz ab und hat 2 Zustände (binär), nämlich „an“ und „aus“. „An“ wird durch eine blaue Fläche signalisiert, „aus“ durch eine weiße. Von unten nach oben steigt der Exponent (ganz unten 2^0, danach 2^1, 2^2 und 2^3) und die Summe aller aktiven (blauen) Flächen ergibt im Zusammenhang mit dem Exponent den Wert der jeweiligen Stelle.
Beispiel:

Die erste Stelle h in der Darstellung hh:mm:ss kann 0, 1 und 2 sein (09:mm:ss Uhr, 13:mm:ss uhr, 21:mm:ss uhr). Nehmen wir an es ist 16:58:12 Uhr. Die erste Stelle ist also 1.
Um eine 1 darzustellen, muss das Element aktiv sein, das für 2^0 steht, denn 2^0 ist 1. In der Binäruhr wäre also im ersten Balken (von links aus gezählt) das erste Kästchen (von unten aus gezählt) blau.
Noch ein Beispiel:
Wir bleiben bei der Uhrzeit von oben und betrachten diesmal die erste Minutenstelle. Die steht im Beispiel auf 5. Eine 5 bekommt man mit Zweierpotenzen über 2^2 (=4) und 2^0 (=1) gebastelt. Zusammenaddiert ergeben nämlich beide 5. In der Darstellung müssen also widerrum die Elemente aktiv (blau) sein, die die entsprechenden Potenzen darstellen. Kurzum: Beim dritten Balken, müssen die Elemente 1 und 3 aktiv sein (gleiche zählweise wie oben).
Umsetzung für Windows Mobile
Um Anwendungen für Windows Mobile zu entwickeln braucht man:
- Windows ;)
- Visual Studio (2005 oder höher), ab der Standard Edition (Express Versionen gehen leider nicht)
- Windows Mobile SDK
Wer kein Windows hat: Bis März gibt’s nen RC von Windows 7 für lau ;).
Wer kein Visual Studio hat: Es gibt 90-Tage Demoversionen afaik. Ansonsten lau/günstig für Studenten (warum nur? ^^).
Wer kein WM-SDK hat: Runterladen :D
Weiter geht’s später mit Teil 2 :).
Update der Binäruhr
Meine Binäruhr für Windows Mobile (B1n4ry) hat eine kleines Update spendiert bekommen. Es sind keine neuen Features hinzugekommen, aber ich habe ein, zwei Fehler behoben und Änderungen vorgenommen:
Bugfix: Anwendung lässt sich jetzt im Landscape Modus starten
Bugfix: Close-Button wird jetzt nach Wechsel des Orientierungsmodus ordentlich dargestellt
Änderung: Digitale Uhr wird nicht mehr angezeigt
Änderung: Close-Button Grafik wurde ausgewechselt. Die neue ist nicht mehr so „aufregend“.
Der Download wurde aktualisiert und findet sich hier:
PS: Die Größe der cab-Datei ist um etwa 3 KB gesunken.
Binary Clock für Windows Mobile
Ich habe als Auftragsarbeit für jemanden von nebenan eine Binäruhr geschrieben, die jetzt fertig ist.
Das Programm hat noch 2 Bugs, die ich gestern in meiner Nacht & Nebel Aktion nicht mehr ausmerzen wollte. Beide sind aber nicht wirklich ein Problem. Der erste tritt beim Beenden der Anwendung auf. Das Startmenü bleibt dann z.T. mit den Grafiken der Anwendung überlagert, obwohl diese bereits geschlossen wurde. Das Problem lässt sich beheben indem man einmal vom Landscape in den Portrait (bzw. andersrum) wechselt und wieder zurück (oder ganz böse: einfach Windows Mobile neu starten – aber das ist nur nötig, wenn man aus welchen Gründen auch immer nicht den Orientierungsmodus wechseln will/kann)
Das zweite Problem tritt auf, wenn man während die App läuft den Orientierungsmodus ändert. Dort hilft einmal auf den Ausknopf drücken und nochmal, um das Bild wiederherzustellen.
Installer gibt’s nicht. Wer ne Binäruhr versteht, wird schlau genug sein, ne CAB zu installieren *gg*.
Büdde.
PS: Benötigt wird das .Net Compact Framework 2.0.