Kassomat: Unterschied zwischen den Versionen
Anlumo (Diskussion | Beiträge) Update |
Anlumo (Diskussion | Beiträge) Schlachtplan |
||
Zeile 20: | Zeile 20: | ||
== Kontakt == | == Kontakt == | ||
Mailingliste gibt es auch! [https://lists.metalab.at/mailman/listinfo/kassomat kassomat@lists.metalab.at] | Mailingliste gibt es auch! [https://lists.metalab.at/mailman/listinfo/kassomat kassomat@lists.metalab.at] | ||
== Schlachtplan (Softwarearchitektur) == | |||
Im Gegensatz zu vorherigen Ansätzen ist momentan der Plan, das ganze Modular zu gestalten. Das soll dazu beitragen, dass sich mehrere Leute an dem Projekt beteiligen, und nicht alles so wie früher an [[Benutzer:anlumo|anlumo]] hängen bleibt. Dazu soll es schlanke Schnittstellen zwischen den Modulen geben, und das ganze soll erweiterbar werden. | |||
Folgende Module sind momentan eingeplant: | |||
* User Interface | |||
* Benutzerverwaltung (ist jemand gerade Authentifiziert, wie hat sich diese Person zu erkennen gegeben) | |||
* Cash-Management (Wie viel Credit hat der Benutzer gerade) | |||
* Admin-Interface (evtl. über das MOS — Verwalten von Objekten, die man bezahlen kann, Abrechnungen ansehen, Cash ausleeren) | |||
* Barcode-Scanner (wird über die serielle Schnittstelle angesprochen) | |||
* Datenbank (permanentes Speichern von Bezahldaten, mit externem Backup) | |||
* SMART Payout Module (Interface zur Hardware, die das Bargeld annimmt und hergibt, Verbindung via serielle auf USB) | |||
* iButton (für Authentifizierung, angeschlossen über serielle auf USB) | |||
* Näherungssensor (ähnlich Puta Putin) | |||
=== Hardware === | |||
[[Benutzer:anlumo|anlumo]] hat sich lange den Kopf zerbrochen, welcher Computer hier eingesetzt werden sollte. Hier ist zu beachten an Anforderungen: | |||
* leicht einzubauen in ein Gehäuse | |||
* sehr leicht programmierbar | |||
* mindestens 2x USB 2.0 | |||
* mindestens 1x RS232 | |||
* Touchscreen 7"-10", mindestens 1024px in der Breite | |||
* interne Storage (bessere Ausfallssicherheit als SD-Karten) | |||
* SD-Karten-Anschluss für Datenbackups | |||
* Ethernet | |||
* Audiooutput | |||
* Kamera ein plus (für QR-Code) | |||
Nach langer Suche wurde ein Gerät gefunden, das allen Anforderungen entspricht. Dies nennt sich [http://www.wvshare.com/product/x210ii-Package-C.htm|x210ii Package C]. Dabei handelt sich eigentlich um ein Demoboard um Tablets zu entwickelt, eignet sich aber ideal für diesen Anwendungsfall. | |||
Es hat einen ARM Cortex A8 mit 1GHz und 512MB RAM. Es sind 4GB onboard Flash vorhanden. Das Gerät ist bereits im Metalab lagernd und wurde auch schon eingehend untersucht. Es unterstützt GNU/Linux, Android und Windows CE. | |||
=== Betriebssystem === | |||
Auch hier gab es viele Überlegungen. Zuerst war lange vorgesehen, dass Qt5 mit QtQuick auf Linux zum Einsatz kommt. Das Problem damit ist, dass diese Library keiner im Lab wirklich kann, und es will sie auch keiner wirklich lernen. Es gibt ein paar, die Qt selber können, aber dann auch nicht mit QtQuick. | |||
Webinterface war auch eine Überlegung, aber die Erfahrungen mit dem Hackersurprise-Interface haben das als sehr performancehungrig exponiert, und damit wurden diese Überlegungen wieder verworfen. Man könnte vermutlich mit viel Herumbasteln irgendetwas grausames zusammenschustern, das halbwegs schnell läuft (ohne Animationen oder sonst irgendwelche Spielereien), aber das macht dann auch keine Freude. | |||
Nächste Idee war, von GNU/Linux wegzugehen, und ein alternatives Betriebssystem zu suchen, das mit der Zielhardware auch zusammenspielt. Hier sticht natürlich Windows CE heraus, das schon seit vielen Jahren erfolgreich in diversen Endkundengeräten wie Bankomaten oder Wärmebildkameras eingesetzt wird. Okok, ich hör schon auf ;) | |||
Android ist generell ein Betriebssystem, das (inzwischen) speziell auf Touchscreen-Devices ausgelegt ist. Es hat auch Unterstützung für Kiosk-Applikationen (wo der Kassomat ein klassisches Beispiel ist). Es verwendet eine spezielle Java-Library, um UI darzustellen. Leider kann aber [[Benutzer:anlumo|anlumo]] (auf dem das ) das genau so gut wie QtQuick (nämlich gar nicht), und die Person im Lab, die das nötige Vorwissen dafür mitbringen würde, will leider mit dem Kassomaten nichts zu tun haben. | |||
Vor kurzem ist [http://www.unity3d.com Unity3D] 4.6 mit dem neuen UI rausgekommen. Damit kennt sich [[Benutzer:anlumo|anlumo]] sehr gut aus, und das neue UI-System sollte nach ersten Recherchen her auch sehr gut dafür geeignet sein. Es klingt vielleicht absurd, eine Game Engine für ein POS-Interface zu verwenden, aber auf der anderen Seite sind dafür sehr viele Tools vorhanden, und Animationen sind auch kein Problem. | |||
[http://www.unity3d.com Unity3D] läuft auf ARM-Prozessoren nur in iOS und Android, d.h. es muss Android eingesetzt werden dafür. | |||
=== Software === | |||
Auf dem Tablet läuft ein gerootetes Android 4.0.4. Vielleicht wäre es möglich, ein neueres Android (4.4.4) drauf zum laufen bringen, allerdings müsste das jemand dann portieren, und [[Benutzer:anlumo|anlumo]] kennt sich damit nicht aus. Unity3D braucht mindestens Android 2.3, d.h. das ist kein Problem. [[Benutzer:anlumo|anlumo]] hat auch schon erfolgreich ein Programm auf dem x210ii zum Laufen gebracht. | |||
Der Plan sieht jetzt so aus, das alle anderen Module als eigener Service auf dem Android-Gerät laufen, die dann über [https://developer.android.com/guide/components/intents-filters.html Intents] miteinander kommunizieren. Diese Intents sind genau auf so eine Art der Kommunikation ausgelegt, das sollte sich gut kombinieren. Diese Services können dann in wasauchimmer geschrieben sein, wobei das Intents-API leider Java ist (d.h. man muss zumindest dafür JNI verwenden). | |||
== Zeitplan == | == Zeitplan == |