kiosk mit zugangskarte

  • Hallo Zusammen,

    ich möchte gerne den Firefox für ein Kiosk-System verwenden. Hab mir auch schon die r-kisok Extension angeschaut und bin soweit auch ganz zuversichtlich. Allerdings soll man am Touchscreen-Terminal auch einkaufen können und muss sich daher vorher Authentifizieren. Für den "Login" steht jedem Kunden eine Kundenkarte mit einer eindeutigen Kennzeichnung zur Verfügung.

    Ich bin nun auf der Suche nach dem besten Lösungsweg. Welche Möglichkeiten gibt es überhaupt solch einen Login zu realisieren?

    Ich könnte mir vorstellen, dass man mit Ajax im Sekundentakt ein cgi abfragen kann welches wiederum den Kartenleser abfragt. Wird eine Kundenkarte erkannt, kann man einen Loginvorgang durchführen. Allerdings müsste man auch weiterhin ständig den Kartenleser abfragen, um festzustellen, wann die Karte wieder entfernt wird. Ich hab keine Ahnung wie stark so ein Dauerpolling den FF belastet.
    Wobei mir gerade auffällt, dass das ganze doch ein wenig komplizierter wird. Wenn ich Ajax verwenden will, muss auch die angezeigte Terminal-Webseite lokal auf dem Rechner liegen. Oder ich muss mit unterschiedlichen Frames arbeiten...

    Gibt es vielleicht eine andere Möglichkeit? Vielleicht über eine Erweiterung, die man extern ansprechen kann? z.B. könnte ein kleines Programm im Hintergrund laufen und den Kartenleser überwachen. Sobald sich jemand anmeldet, übergibt das Programm der Extension die Kartennummer und der FF startet die Loginsequenz.

    Den Kartenleser kann ich mit Java ansteuern. Ein kleines Programm im Hintergrund ist daher auch kein Problem. Aber ich hab überhaupt keine Erfahrung mit FF-Erweiterungen und brauche daher ein wenig Feedback ob sowas überhaupt geht.

    cu cyro

  • Kannst du über eine Erweiterung lösen. Gibt sicher mehrere Ansätze, da du den Kartenleser mit Java ansteuern kannst, bietet sich auch die direkte Nutzung von Java innerhalb einer Erweiterung an.
    https://developer.mozilla.org/en/Java_in_Firefox_Extensions
    http://digitheadslabnotebook.blogspot.com/2008/11/java-i…osed-again.html
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6745455

  • danke für die Links. Das bringt mich ein Stück weiter.

    Soweit ich das verstanden habe, kann ich also direkt Methoden im Java-Code aufrufen und den Rückgabewert verwenden.

    Kleiner Auszug aus einem der Beispiele

    Code
    var aClass = java.lang.Class.forName("org.mozilla.developer.CardReader", true, cl);
    var aStaticMethod = aClass.getMethod("getCardId", []);
    var cardId = aStaticMethod.invoke(null, []);

    Ich muss dann innerhalb der Erweiterung (z.B. im Sekundentakt) die getCardId() Methode aufrufen und auf einen verwertbaren Rückgabewert warten.

    Ich bin überzeugt, dass das deutlicher schneller und effizienter ist, als einen Ajax Request abzusetzen. Aber gibt es eventuell auch die Möglichkeit einen Java-Thread zu starten, der sich nur bei Bedarf meldet und eine Methode innerhalb der Erweiterung anstößt? Oder macht das von der Belastung keinen Unterschied?

    Hat jemand eine gute Web-Empfehlung (eventuell deutsch) für den Einstieg in die Entwicklung von FF-Erweiterungen?
    Ich weiß, man kann auch googeln. Aber deshalb frag ich ja nach einer Empfehlung.

  • cyro wrote:

    Zitat

    Ich bin überzeugt, dass das deutlicher schneller und effizienter ist, als einen Ajax Request abzusetzen.

    Man spart sich zumindest den Protokoll-Overhead im Browser und die Implementierung eines Listeners in Java. Gefühlsmäßig schätze ich auch das es etwas schneller ist, allerdings fehlen mir da Erfahrungswerte.

    Zitat

    Aber gibt es eventuell auch die Möglichkeit einen Java-Thread zu starten, der sich nur bei Bedarf meldet und eine Methode innerhalb der Erweiterung anstößt? Oder macht das von der Belastung keinen Unterschied?

    Ob man in einem Java-Thread einen Observer registrieren kann, der dann als Callback-Funktion innerhalb der Erweiterung liegt, kann ich nicht beurteilen. Das müsste ich selbst erstmal ausprobieren. Nach der Dokumentation von LiveConnect sollte es aber möglich sein.
    Grundsätzlich wäre diese Lösung aber vorzuziehen. Das Polling des Cardreaders läuft ohnehin, aber du belastest den Fx-Prozess nicht mit zusätzlicher Arbeit.

    Zitat

    Ich muss dann innerhalb der Erweiterung (z.B. im Sekundentakt) die getCardId() Methode aufrufen und auf einen verwertbaren Rückgabewert warten.

    Das wäre letztlich immer noch möglich.

    Zitat

    Hat jemand eine gute Web-Empfehlung (eventuell deutsch) für den Einstieg in die Entwicklung von FF-Erweiterungen?


    https://developer.mozilla.org/de/Erweiterungen
    https://developer.mozilla.org/en/Extensions
    Das ist die Quelle (in doppelter Hinsicht). In der deutschen Doku sind aber nicht alle Artikel vorhanden, daher empfehle ich ohnehin die englische. Die Tutorials dort geben einen einfachen Einstieg. Die verwendbaren Interfaces sowie die XUL-Dokumentation (für die Oberflächen) findet sich ebenfalls dort.

    Nachtrag:
    LiveConnect dürfte aber keine verlässliche Basis für die Zukunft darstellen, es gibt Pläne es im Fx zu deaktivieren. Es lohnt sich daher wohl ein Blick auf:
    http://simile.mit.edu/wiki/Java_Firefox_Extension

  • Hab jetzt endlich wieder Zeit gehabt mich mit dem Thema zu beschäftigen. Zwar steh ich noch ziemlich am Anfang aber ich hab jetzt eine Erweiterung, die eine Java Classe aufruft und einen Wert ausließt.

    Ich hab mir auch simile und diverse Abwandlungen davon angeschaut. Bin aber zu dem Schluss gekommen, mich erstmal ganz an die Anleitung bei mozilla zu halten. Dort wurde jüngst in der Wiki ergänzt, dass die Änderungen an LiveConnect im Grunde nur die Anbindung von Java Applets betrifft. Wenn man den Java Code aus dem Context einer Erweiterung aufruft, bleiben die Security-Exceptions aus.
    Ich muss allerdings gestehen, dass ich den Code noch nicht im FF3.5 getestet habe.

    Sehr hilfreich bei bisherigen Umsetzung waren mir diese beiden Links:
    https://developer.mozilla.org/En/Java_in_Firefox_Extensions
    http://forums.sun.com/thread.jspa?threadID=5366932&start=0