"We are back" « oc.at

nicht alltäglich - Touchscreen

cdoo 29.08.2007 - 08:27 2141 20
Posts

cdoo

Bloody Newbie
Registered: Apr 2005
Location: stp
Posts: 47
Guten Morgen miteinander!

..ich brauch Hilfe :D

Folgende Problemstellung:

Vor mir liegt eine Art Terminal, hier wird automatisch ein Firefox Fenster geöffnet und ein Touchscreen ist für das Klicken auf Buttons zuständig. Als Tastatursignal ist ein Kartenleser angeschlossen der die Kundennummer per Tastaturschnittstelle und send abschickt wenn sie eingeschoben wird.

Der Kartenleser hat innen eine Kartennummer eingeklebt die beim herausziehen der Karte gescannt und somit das Timeout erzeugt wird.

Webserver: Apache - Scriptsprache: PHP - DB: MySQL

es ist prinzipiel alles fertig, mein Problem besteht nur im "Session Management".
Aktuell habe ich es so gelöst, dass die Seite alle 5 Sek. aktualisiert wird und den Focus immer wieder auf ein Hidden Field setzt, sodass ein Login/Logout möglich wird (Sollte der User mal nicht auf den Button klicken sondern in ein leeres Feld verliert das hiddenfield den Fokus).

Nur die Aktualisierung ist im Prinzip sicherlich keine Lösung.

Ich brauch dringenst ein Erfolgserlebnis ;)

Dank euch!

Chris

DKCH

Administrator
...
Registered: Aug 2002
Location: #
Posts: 3377
kannst du die frage nochmal kurz zusammengefasst formulieren? irgendwie seh ich die in deinem post nicht :D

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
ich kenn mich auch nicht aus nach 3 mal lesen was du willst :)

cdoo

Bloody Newbie
Registered: Apr 2005
Location: stp
Posts: 47
ok is ein bissal kompliziert deswegen gg

also folgendes:

es ist eine Art Kundenterminal auf dem es Möglich ist für Benutzer durch einschieben einer Karte in ein Portal zu kommen wo er seine Punktestand kontrollieren kann.

Dieses Terminal hat einen Cardreader der an der Tastaturschnittstelle angeschlossen ist. Beim Einschub der Karte schickt diese die ausgelesene Kundennummer per POST ab.

Wenn die Karte herausgezogen wird, wird im Cardreader eine fix eingeklebte Nummer abgelesen, die dann eben das sogenannte Timeout schickt.

das ganze muss für mich jetzt mit einem INPUT Feld realisiert werden -> auf dem der Fokus sitzt. Mein Problem ist jetzt, sollte der Benutzer am Touchscreen in einen leeren Bereich "drücken", verliert mein schönes Feld den Fokus und somit gibts auch kein Timeout mehr.

Dieses Problem hab ich als Befriedigung einfach kurz durch einen 5 Sek. refresh (immer auf jeder Seite) behoben, dass einfach bei diesem Refresh immer der Focus erneut gesetzt wird.

Ist natürlich keine Lösung, ich weis auch ned ob wirklich irgendwer mit PHP für das Problem eine Lösung parat hätte?

Falls ja, wäre das ein HIT ;)

--> wie würdet ihr das Problem lösen?

Dankeschön.
Bearbeitet von cdoo am 29.08.2007, 09:02

DKCH

Administrator
...
Registered: Aug 2002
Location: #
Posts: 3377
mit javascript aufs onblur horchen und den focus neu requesten?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25858
wie greifst du auf den kartenleser zu?

cdoo

Bloody Newbie
Registered: Apr 2005
Location: stp
Posts: 47
das mit dem onblur schau ich mir nach der Mittagspause an, danke.

der Kartenleser schickt beim korrekten lesen der Karte den Inhalt (Zahlencode) über die Tastaturschnittstelle. (deswegen der Fokus)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25858
ein "schöne" js-lösung fällt mir nicht ein, aber besteht die möglichkeit einen kleinen c++ client zu schreiben um den inhalt der tastatur abzufangen und zB in ein file zu schreiben? technisch wäre das simpel, wenn es nicht für multiplattform geschrieben werden müsste.

Lizardking

Big d00d
Avatar
Registered: Nov 2004
Location: sogined
Posts: 167
kommt mir bekannt vor :D
hab an meiner schule auch ein terminal mit touchsreen für die schüler gemacht.
unsere lösung war, (mit motorisiertem Kartenleser,ASE ES MT Motorized Smart Card Reader ), wie folgt:

ActiveX plugin, dass Javascript-Functions für diverse karten-transaktionen bietet (zB ob sich eine karte im reader befindet, PIN, creditstand usw.)

onLoad wird nun die funtion checkCard() aufgerufen, die bei 'true' zur pinabfrage weiterleitet oder sich bei 'false' mit verzögerung selbst aufruft.
also mehr oder weniger eine endlosschleife, solange sich keine karte im reader befindet.

hth & stehe gerne für rückfragen zur verfügung
Bearbeitet von Lizardking am 05.09.2007, 15:07

cdoo

Bloody Newbie
Registered: Apr 2005
Location: stp
Posts: 47
hab gestern ziemlich lange gegrübelt..

@mat das problem ist, dass auf dem "kasterl" eine abgespeckte linux distri. läuft die wirklich nur für eine Art "surf" station vorgesehen ist. (sie lädt nur das Firefox Plugin)

@lizzardking wärst du bereit mir einen einblick in dieses applet zu geben? gg

wär super!


Dank euch!

Chris

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25858
dann wäre das activex-plugin ohnehin belanglos, da es nur auf win+ie läuft.

wo liegt allerdings das problem bei einem abgespeckten linux? gibts keinen zugriff drauf? sollte technisch problemlos möglich sein und als service eingebunden werden können.

Lizardking

Big d00d
Avatar
Registered: Nov 2004
Location: sogined
Posts: 167
tja, da ist der haken an der sache :(
da's nicht selbst geschrieben wurde, steht keine source zur verfügung, bzw. das ganze funktioniert überhaupt nur mit einem usb-dongle.

was ich sicher sagen kann, ist, dass das Applet mit >99% aller kartenleser kompatibel ist, wenn PC/SC treiber für den reader vorhanden sind.



//
Zitat
dann wäre das activex-plugin ohnehin belanglos, da es nur auf win+ie läuft.
das kommt dann natürlich auch noch dazu.
Bearbeitet von Lizardking am 05.09.2007, 15:08

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2708
mein gott, der rest funzt eh schon bei dir - nicht wahr? - dann verwend wie von DKCH vorgeschlagen den onBlur event... quasi im input:

Code:
<input type="text" onBlur="this.focus();"/>

so in etwa müsste das gehn. ist die sauberste lösung. und funzt "immer".

cdoo

Bloody Newbie
Registered: Apr 2005
Location: stp
Posts: 47
ich werd´s probieren. danke ;)

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25858
Zitat von murcielago
mein gott, der rest funzt eh schon bei dir - nicht wahr? - dann verwend wie von DKCH vorgeschlagen den onBlur event... quasi im input:

Code:
<input type="text" onBlur="this.focus();"/>

so in etwa müsste das gehn. ist die sauberste lösung. und funzt "immer".
das ist die frage. wenn der focus weg ist, dann wird man garantiert bei der eingabe über die screen-tastatur behindert. das müsste man auf alle fälle mit den projektvorgaben übereinstimmen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz