PC - Application

Die PC Applikation für das Entwerten der Tickets wurde in C und C++ implementiert und ist auf und für Linuxsysteme entwickelt worden.
Dabei wurde die HAL in C geschrieben. Zur Kommunitakion mit dem NFC-Reader wird die libNFC in der Version 1.6 verwendet, die jedoch für unsere Zwecke leicht modifiziert wurde.
Die GUI wurde in C++ mit dem Qt Framework gestaltet und geschrieben, um eine leichte Portierung auf Windows möglich zu machen.

 

File System

Die Applikation emuliert einen NFC-Tag nach ISO 14443A (MIFARE), wobei das zugrundeliegende DateiSystem einer NFC-Karte so implementiert wurde, dass auch ein nachträgliches Hinzufügen von neuen Files möglich ist. Das ist auch schon während des Entwicklungsprozesses nötig gewesen, da zusätzlich eine NDEF-Kennung eingebaut wurde.

 

 

GUI

Die GUI verbindet sich mit der Datenbank, welche alle Tickets enthält. Wird ein Ticket in der Datenbank durch die Applikation, also durch Verbindung von Handy und Computer entwertet, so wird die GUI davon informiert und verändert sich dementsprechend.

Die GUI hat folgende Elemente:

  • QTicket Logo mit Station ID
  • Letzes entwertetes Ticket
  • Liste aller Tickets (mit Filterung nach Events)
  • Statusleiste

 

Wird ein Ticket entwertet, so wird die Last-transaction-Tabelle für 2 Sekunden grün hinterlegt. Danach bleibt die Information des entwerteten Tickets stehen, bis das nächste Ticket entwertet wird.

 

Durch den Filter der Ticket-Tabelle können alle Tickets für ein spezielles Event angezeigt werden.

 

Zusätzliche Ticketinformationen können abgerufen werden, indem man ein Ticket markiert und den Ticketinfo-Button drückt. Daraufhin öffnet sich ein neues Fenster, das alle Informationen über das Ticket enthält.

 

Datenbank

Da Android SQLite benutzt wird auch in der PC Applikation dieser Standard benutzt. Da es sich um eine Demoapplikation handelt sind Android und PC Datenbank nicht zentral auf einem Server gespeichert. Die Applikation wurde jedoch so entwickelt, dass das möglich ist.

Auf die Datenbank wird sowohl von der GUI zugegriffen, als auch vom Applikations-Backend (HAL, FileSystem). Das Ändern der Datenbankeínträge ist über die GUI möglich, wenn man Settings->editable Database aktiviert. Allerdings muss dabei bedacht werden, dass dabei nur die PC-Datenbank geändert wird und nicht die am Android-Handy.

 

Portierung auf Windows

Die Portierung auf Windows ist prinzipiell möglich. Dazu muss die Applikation und die libNFC mit mingw kompiliert werden. Allerdings gibt es dabei noch Probleme mit der Kommunikation zum Reader auf Treiberebene: Nachdem die GUI gestartet wurde und versucht wird auf den Reader zuzugreifen, hängt sich die Applikation auf, da sie keine Rückmeldung vom Reader bekommt. (Auf Linux macht das keine Probleme, da bei Fehlinitalisierung des Readers dieser als disconnected angezeigt wird und über Reader->Connect erneut verbunden werden kann).