Was ist das überhaupt?
Der Seiko EZ30 ist ein Etikettendrucker aus den 1990ern, mit dem spezielle Klebeetiketten bedruckt werden können. Dieser wird über eine RS232-Schnittstelle angesprochen und normalerweise von einem Programm / Treiber bedient, dessen aktuellste Version für Windows 3.11 herausgekommen ist. Im Gegensatz zu späteren Etikettendruckern von Seiko gibt es weder einen neueren Treiber noch eine Dokumentation für das Serielle Protokoll mit dem der Drucker angesteurt wird.
Was wurde gemacht?
Mit viel Mate, Unzähligen Testdrucken der in Dosbox emulierten Originalsoftware und Mitschnitten der Seriellen Datenverkehrs konnte ich das gesprochene Protokoll in mehreren Schritten zu einem Großteil Reverse-Engineeren, wobei sich herausstellte, dass der Drucker von einem 4-Bit Microcontroller gesteuert wird und die Daten als Bitmap-Grafik an den Drucker gesendet werden - Egal ob es sich um Bilder, Grafiken oder Text handelt! Mit dem Reverse-Engineerten Protokoll habe ich dann in Python einen neuen Treiber für den Drucker geschrieben, der sich sowohl um die Ansteuerung des Druckers als auch um das umwandeln von Bilddateien in das Bitmap-Format des Druckers kümmert. Auf Basis des Treibers habe ich dann eine Web-UI geschrieben, über die Bilder hochgeladen und ausgedruckt werden können. Dabei wird auch eine Vorschau generiert, damit man bereits vorher weiß wie das erzeugt Label im Anschluss aussehen wird.
Um das Ganze Praktisch verfügbar zu machen wurde auf der Rückseite des Druckers ein Banana Pi montiert, auf dem die Web-UI und der Treiber laufen. Über einen eingebauten USB<->Seriell-Wandler spricht der Pi dann mit dem Drucker. Das Dateisystem des Pi ist außerdem in den Read-Only-Modus umgestellt worden, sodass dieser zum Drucken angestellt und anschließend ohne Sorge problemlos wieder ausgestellt werden kann.