Frage

Im Moment habe ich einen USB-Kartenlese an einem eingebetteten Linux-Maschine und von dem, was ich sagen kann, und von dem, was ich recherchiert habe es fungiert als Tastatur und Eingaben werden alle Daten, als ob ich Typisierung waren. Jetzt habe ich ein Perl-Skript, das alle diese Daten nimmt und speichert sie in einer Datei. Das einzige Problem ist, es kennt nur die Daten zu übernehmen, wenn der Perl-Skript sonst im Vordergrund ausgeführt wird, wo kommt die „Tastatur“ eingegeben.

Meine Frage ist, wie kann ich diese Karte Swipe machen das Skript jedes Mal, führen Sie es Eingabe liest? Oder könnte ich erfassen irgendwie die Daten mit einer App im Hintergrund läuft. I.E. in einem c ++ Programm im Hintergrund ausgeführt wird, wird cin Jede Eingabe an das Gerät lesen?

Ich habe noch nie mit einem Kartendurchzugsleser so Ich bin nicht 100% sicher, wie sie funktionieren messed herum.

Irgendwelche Vorschläge auf diesem würde geschätzt!

War es hilfreich?

Lösung

Ich habe eine Idee, aber es ist sehr allgemein gehalten.

Können Sie sich ständig in einem anderen Programm für Daten überwachen, Puffer, und dann die Ergebisse in Ihren Perl-Skript, wenn der Puffer eine bestimmte Größe erreicht oder geht für einen bestimmten Zeitraum ohne Aktivität? Wenn Sie eine Pipe in, sollten Sie nicht Ihre Perl-Skript zu ändern, da es sich nach wie vor auf STDIN sein wird.

So würde es so aussehen:

Monitoring-Programm -> Sammeln Daten -> Pipes es in Ihr Perl-Programm

Ich hoffe, diese Idee hilfreich ist.

-Brian J. Stinar -

Andere Tipps

Ich habe fast genau dies getan (außer mit einem USB-Barcode-Leser, dass zum Beispiel eine Tastatur erschienen).

Mein System hat benutzerdefinierte USB Hotplug Regel, dass das USB-Gerät erkennt, wenn es in auf der Grundlage seiner Hersteller- und Produkt-ID angeschlossen ist. Diese Regel erzeugt einen symbolischen Link auf das entsprechende event Gerät in /dev/input/.

Ich habe dann ein C-Dämon, der läuft zu allen Zeiten. Es beobachtet die /dev/input/ Verzeichnis, und wenn es den Symlink sieht erscheinen sie die event Gerät öffnet. Es verwendet dann die EVIOCGRAB IOCTL die Ereignisvorrichtung zur ausschließlichen Verwendung (dies verhindert, dass die Daten erscheinen als Tastatureingabe in anderen Anwendungen) zu greifen, und liest Eingabeereignisse zu Drücken von Tasten entsprechen. Der Daemon wandelt die Tastenfolgen in Zeichen und speichert sie in einer Datenbank.

cin wird Eingabe von dem angeschlossenen Terminal Eingabegerät gelesen. Ohne zu wissen, mehr über Ihr Software-Design, meine erste Vermutung, die Daten von einer Perl-Skript liest ist nicht die beste Wahl des Designs. Ich kann IR-Fernbedienungen auf Embedded-Linux-Geräten mit einem Perl-Skript, wie Sie beschreiben, aber im Allgemeinen I-Schnittstelle direkt mit der Hardware oder einem Lieferanten geliefert API von innerhalb meiner Hauptanwendung lesen. Gab es eine API mit dem Kartenleser zur Verfügung gestellt?

Was ist der Gerätename des Kartenlesers, wenn es in das Gerät eingesteckt ist (/ dev / *)? Ich würde geöffnet, und es auf diese Weise lesen.

Ich habe noch nie mit diesem in Linux behandelt. Doch das klingt sehr ähnlich zu dem, was ich habe in Windows zu sehen.

Nach meiner Erfahrung viele dieser Arten von Geräten werden automatisch vom Betriebssystem als Tastatur-Typ des Geräts festgestellt. So eine Eingabe von dem Leser in die gleiche Tastatur Strom zugeführt, dass die realen Tastatur Anwendungen. Zu der Zeit, diese erreicht alle aktuellen Programme ausgeführt wird, gibt es keine Möglichkeit, den Unterschied zwischen dem Kartenleser zu sagen, Daten und einem Benutzer die Eingabe schnell nur die Eingabe wirklich wirklich.

Als Folge können Sie das Verhalten in der ursprünglichen Frage beschrieben erhalten. Die Eingabe des Kartenlesers nur geht, wo normale Tastatureingabe geht - auf das Programm im Fokus

Ihre beste Möglichkeit wäre, die Website des Herstellers zu untersuchen (oder anderweitig Kontakt mit ihnen) und herauszufinden, ob sie irgendeine Art von Fahrern zur Verfügung stellen, die ein Programm erlauben würden, dass die Eingabe zu fangen völlig getrennt von dem Tastatur-Stream.

Wenn der Hersteller nicht so etwas liefert, vielleicht einige 3rd-Party tut. Aber leider habe ich noch nie untersucht, dass damit ich weiß nicht, wo dir sagen, sogar beginnen suchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top