mabue88
Goto Top

RFID-Lesegerät als Eingabegerät - wie in Programm einbinden?

Hallo,

ich habe ein USB-RFID-Lesegerät, das sich als Eingabegerät am OS (Linux) anmeldet (wie bei den Barcodescannern). Lege ich einen RFID-Chip auf ihn wird die ID des Chips ausgegeben (10 stellige Zahlenfolge). Hierfür werden Tastendrücke auf einer Tastatur simuliert. Auf dem Monitor kann ich nicht unterscheiden, ob die Eingabe durch die Tastatur oder dem RFID-Leser erfolgte.

Ich will die "Eingaben" des RFID-Lesers aber gezielt mit einem Programm auswerten.
Hierfür habe ich schon das Programm actkbd getestet. Damit habe ich allerdings nichts hinbekommen.

Am einfachsten wäre es meines erachtens, wenn man die Eingabe dieser virtuellen Tastatur (also des RFID-Leser) auf einen virtuellen COM-Port schicken könnte. Treiber hierfür habe ich schon gesucht, aber keine gefunden.

Im Netz habe ich auch gelesen, dass man anhand von Zeitmessungen Rückschlüsse auf das verwendete Eingabegerät ziehen kann. So eine Methode wäre für mir allerdings die allerletzte Lösung.

Hat jemand einen Tipp dazu?

Danke
mabue88

Content-ID: 206837

Url: https://administrator.de/contentid/206837

Ausgedruckt am: 26.11.2024 um 05:11 Uhr

wiesi200
wiesi200 22.05.2013 um 12:51:42 Uhr
Goto Top
Hallo,

ein vernünftiges Lesegerät kann einen COM Port Simulieren und die Daten kann man dann abgreifen.
64748
64748 22.05.2013 um 13:00:45 Uhr
Goto Top
Hallo,

ich hab hier ein Tool namens usbhid-dump (usbhid-dump - dump USB HID device report descriptors and streams)

Vielleicht kannst Du damit was machen. Es gibt eine Manpage dazu.
markus@samsung:~$ usbhid-dump --help
Usage: usbhid-dump [OPTION]...
Dump USB device HID report descriptor(s) and/or stream(s).

Options:
  -h, --help                       output this help message and exit
  -v, --version                    output version information and exit

  -s, -a, --address=bus[:dev]      limit interfaces by bus number
                                   (1-255) and device address (1-255),
                                   decimal; zeroes match any
  -d, -m, --model=vid[:pid]        limit interfaces by vendor and
                                   product IDs (0001-ffff), hexadecimal;
                                   zeroes match any
  -i, --interface=NUMBER           limit interfaces by number (0-254),
                                   decimal; 255 matches any

  -e, --entity=STRING              what to dump: either "descriptor",
                                   "stream" or "all"; value can be
                                   abbreviated

  -t, --stream-timeout=NUMBER      stream interrupt transfer timeout, ms;
                                   zero means infinity
  -p, --stream-paused              start with the stream dump output
                                   paused
  -f, --stream-feedback            enable stream dumping feedback: for
                                   every transfer dumped a dot is
                                   printed to stderr

Default options: --stream-timeout=60000 --entity=descriptor

Signals:
  USR1/USR2                        pause/resume the stream dump output
Markus
Pjordorf
Pjordorf 22.05.2013 um 13:04:35 Uhr
Goto Top
Hallo,

Zitat von @mabue88:
ich habe ein USB-RFID-Lesegerät
Nenne bitte niemals den hersteller oder gar das Modell. das könnte es uns ja ermöglichen dir zu helfen.

das sich als Eingabegerät am OS (Linux) anmeldet
Wirklich Anmelden? So richtig mit Benutzername und Passwort?

Hierfür werden Tastendrücke auf einer Tastatur simuliert.
Wenn dein RFID Scanner eben als solches gebaut wurde ist das doch korrekt.

Auf dem Monitor kann ich nicht unterscheiden, ob die Eingabe durch die Tastatur oder dem RFID-Leser erfolgte.
Glückwunsch. Dein USB RFID Scanner arbeitet also Fehlerfrei.

Ich will die "Eingaben" des RFID-Lesers aber gezielt mit einem Programm auswerten.
Kann dein USB RFID Scanner das überhaupt? Hat der hersteller es ermöglicht das er mehr als nur eine Tastatur darstellen kann? Hat der Hersteller den einen Kommunikation vorgesehen?

Hierfür habe ich schon das Programm actkbd getestet. Damit habe ich allerdings nichts hinbekommen.
Was ist den die Aufgabe von http://users.softlab.ece.ntua.gr/~thkala/projects/actkbd/ Das kann doch nur auf bestimmte Eingabe ein Ereigniss auslösen. Liefert dein USB RFID Scanner den solche damit es erkannt werden kann?

Am einfachsten wäre es meines erachtens, wenn man die Eingabe dieser virtuellen Tastatur (also des RFID-Leser) auf einen virtuellen COM-Port schicken könnte.
Dir ist schon klar wie die Tastatur in einem Rechner arbeitet, oder?

Im Netz habe ich auch gelesen, dass man anhand von Zeitmessungen Rückschlüsse auf das verwendete Eingabegerät ziehen kann.
Klar. Ein USB RFID Scanner kann dir die Zahlen schneller in den Tastaturpuffer schreiben als du diese eintippen kannst. Und die Zeit zwischen den Zeichen wird beim USB RFID Scanner immer ziemlich exakt sein (je nach genauigkeit deiner Timer) wogegen du als Mensch immer anderen Zeiten errreichen wirst. Der Mensch ist eben keine perfekte Maschine.

Hat jemand einen Tipp dazu?
Einen USB RFID Scanner verwenden der auch per Software gezielt angesprochen werden kann und nicht nur ein Gerät welches eine Tastatur emuliert.

Gruß,
peter
mabue88
mabue88 22.05.2013 um 22:49:15 Uhr
Goto Top
Kleiner Zwischenstand:

Das Einlesen der Eingaben des RFID-Leser (und wirklich nur dessen Eingaben) in ein C Programm funktioniert wunderbar!
16568
16568 23.05.2013 um 09:17:58 Uhr
Goto Top
Zitat von @mabue88:
Kleiner Zwischenstand:

Das Einlesen der Eingaben des RFID-Leser (und wirklich nur dessen Eingaben) in ein C Programm funktioniert wunderbar!

Wir sind stolz wie Oskar auf Dich... *seufz*

Dummerweise hast Du es bis jetzt noch nicht fertig gebracht, uns Deine Distro und Version zu nennen; ebenso, ob Du X-Server nutzt, oder was auch immer.


Lonesome Walker
mabue88
mabue88 23.05.2013 um 11:11:56 Uhr
Goto Top
RFID-Leser: Billigteil aus China (Hersteller und Typ steht nicht drauf) http://www.ebay.de/itm/New-USB-RFID-Contactless-Proximity-Smart-Card-Re ...

OS: Raspbian (auf Raspberry Pi) - Version vom 09.02.2013

Kein X-Server.


In der Software lese ich /dev/input/event0 aus und verarbeite die Events weiter.
16568
16568 24.05.2013 aktualisiert um 12:12:49 Uhr
Goto Top
Zitat von @mabue88:
Kein X-Server.

Kein xinput face-wink

In der Software lese ich /dev/input/event0 aus und verarbeite die Events weiter.

Das ist dann auch so ziemlich die einzige Möglichkeit, sofern Du nicht eigene Kernelmodule bastelst face-smile
(okay, Raspbian hat auch udev, ginge auch darüber mit rules...)


Lonesome Walker