Pixelbatzen

Hier schreibt zur Abwechslung mal nicht Alex, sondern ich, Martin Pittenauer meines Zeichens Mac OS X / Cocoa Entwickler bei TheCodingMonkeys (SubEthaEdit) und Podcastkollege von Alex, der mich um einen kleinen Aufsatz über mein iPhone Gehacke gebeten hat. Also: Vorsicht – länglicher Gastbeitrag mit erhöhtem Geekgehalt.

Wer kennt sie nicht – die komischen rechteckigen Pixelhaufen die mittlerweile viele Rechnungen, Briefe und sonstige Alltagsgestände zieren und eigentlich eher aussehen als hätte man, wenn auch sehr quadratisch, eine Fliege auf dem Dokument erschlagen. Die Rede ist von 2D Barcodes, die im Vergleich zu ihren ein-dimensionalen Brüdern aus dem Supermarkt oft weit mehr Information tragen können.

Für ge-jailbrake-te iPhones gibt es zum Entschlüsseln der Pixelbatzen das Programm iMatrix. Zum Zeitpunkt meiner ersten Recherche verstand das aber nur sogenannte QR Codes, ein 2D Barcode der ursprünglich aus Japan kommt und von Denso Wave patentiert ist.

Nun wollte ich aber erstens einen Reader für die Barcode Variante DataMatrix, die in hiesigen Breiten in meiner Erfahrung häufiger anzutreffen ist, und zweitens mal vor dem offiziellen SDK Release in die iPhone Software Entwicklung hineinschnuppern. Also mal mittels toolchain und ergoogelten Xcode Templates eine rudimentäre Arbeitsumgebung gebastelt. Dann noch schnell das gerade frisch erschiene Release von libdmtx, eine Programm-Bibliothek zum entziffern von DataMatrix Barcodes, auf Mac OS X angepasst und für das iPhone kompiliert. Nach viel Spucke, Umschiffen einiger Schlaglöcher und einer Pixelformat-Massage sah das Ergebnis aus wie folgt:

DirektDataMatrix

Ein kleiner Schritt für die Menschheit, ein großer für mein iPhone.

Zeit für ein Resümee dieser Aktion. Beim Programmieren wurde mir schnell zumindest ein Grund klar, warum Apple derzeit noch keine Drittherstellerentwicklung erlaubt und wie schwer es die inoffiziellen Apps derzeit haben stabil das zu tun was sie tun. An diversen Ecken in den Frameworks finden sich oben erwähnte Schlaglöcher, wo manches nicht funktioniert, abstürzt oder sich komisch verhält. (Für Apple selbst kein Problem, die sollten wissen was geht und was nicht.) Auch die Toolchain ist und bleibt derzeit eher ein Hack als ernsthafte Arbeitsumgebung: Stellt man zum Beispiel die Optimierung des Compilers an, fliegt einem relativ kommentarlos der Code für die iPhone Kamera um die Ohren. Man programmiert da zur Zeit also auf mehreren ziemlich tönernen Füßen. Nichtsdesto trotz hat es, wie geplant, Spass gemacht. Ach und bevor ich es vergesse: Die aktuelle Version von iMatrix erkennt jetzt auch DataMatrix Codes.