Ich möchte über ein Nextion-Touchdisplay eine minimalistische Tastatur simulieren. Die seriellen Signale des Displays gehen an einen Arduino Micro Pro, der als HID-Keyboard an einem Raspi angeschlossen ist. Aufgrund der übermittelten Keycodes soll per Javascript in mehreren auf dem Raspi angezeigten Websiten navigiert werden ... (<body onkeypress= ...>) Das Meiste davon funktioniert auch bereits, dennoch treibt mich eine Sorge um: Wie bzw. kann ich überhaupt überprüfen, ob auf dem Raspi auch tatsächlich die gewollte HTML-Page angezeigt wird? Meine Touch-Tastatur ändert nämlich das Layout, je nach den Inhalten der annavigierten Seite. Es könnte also passieren, dass Tastatur-Layout und Webseite nicht zu einander passen, z.B. wenn der (lokale) Webserver mal hängt. Langer Rede kurzer Sinn: Kann man auf eine HID-Tastatur (USB) aus dem Raspi heraus irgendwelche Infos zurückschreiben, um eine Art Überprüfung zu realisieren? Alternativ dazu könnte ich in den (ebenfalls lokalen) Webseiten irgendwelche Skripte (PHP?) lostreten, die dann z.B. per RS232 auf den Arduino rückwirken, was aber einen erhöhten Hardware-Aufwand bedeuten würde. Eine reine Software-Lösung wäre nat. besser. Danke für Tips.
Frank E. schrieb: > Langer Rede kurzer Sinn: Kann man auf eine HID-Tastatur (USB) aus dem > Raspi heraus irgendwelche Infos zurückschreiben, um eine Art Überprüfung > zu realisieren? Nein. Eine HID-Tastatur kann das nicht. Du musst ein Composite Device anlegen, das die HID-Tastatur als eine Komponente und ein Custom HID oder ein CDC-ACM als zweite Komponente enthält. Die letzte Komponente wäre dann für die Umschaltung der Tastaturlayouts zuständig. fchk
Gerade heute drüber gestolpert: https://github.com/NicoHood/HID Das ist eine aufgebohrte HID-Bibliothek, die u.a. auch /composite devices/ unterstützt, also genau das hier gewünschte ...
Frank E. schrieb: > Wie bzw. kann ich überhaupt überprüfen, ob auf dem Raspi auch > tatsächlich die gewollte HTML-Page angezeigt wird? Du kannst die NumLock-LED blinken lassen... Frank E. schrieb: > Meine Touch-Tastatur > ändert nämlich das Layout, > je nach den Inhalten der annavigierten Seite. Ist das eine gute Idee? Ich würde versuchen, genau das zu vermeiden.
S. R. schrieb: > Frank E. schrieb: >> Wie bzw. kann ich überhaupt überprüfen, ob auf dem Raspi auch >> tatsächlich die gewollte HTML-Page angezeigt wird? > > Du kannst die NumLock-LED blinken lassen... Welche Numlock-LED? Wo? > > Frank E. schrieb: >> Meine Touch-Tastatur >> ändert nämlich das Layout, >> je nach den Inhalten der annavigierten Seite. > > Ist das eine gute Idee? > Ich würde versuchen, genau das zu vermeiden. Ja, muss sein, weil es sich quasi um Funktionstasten handelt und sich deren Sinn nur jeweils zusammen mit den entsprechenden Inhalten ergibt (z.B. Video auswählen, Video abspielen/anhalten/lauter/leiser). Ist auch eine Platzfrage
Frank E. schrieb: > Die seriellen Signale des Displays gehen an einen Arduino Micro Pro, der > als HID-Keyboard an einem Raspi angeschlossen ist. Wieso machst Du nicht alles mit dem Raspi? Der könnte das und hättest diese Probleme nicht! Gruss Chregu
Frank E. schrieb: > Aufgrund der übermittelten Keycodes soll per Javascript in mehreren auf > dem Raspi angezeigten Websiten navigiert werden ... (<body onkeypress= > ...>) Das ist ja ein Riesengebastel. Nextion kommuniziert üblicherweise über die serielle Schnitstelle. Diese lässt sich direkt (evtl. Pegelwandler notwendig) mit dem Raspberry über die GPIOs verbinden. Das Senden/Empfangen kann man mit diversen Programmiersprachen oder Tools realisieren. Da gibt es genügend Anleitungen im Internet.
Frank E. schrieb: >>> Wie bzw. kann ich überhaupt überprüfen, ob auf dem Raspi auch >>> tatsächlich die gewollte HTML-Page angezeigt wird? >> Du kannst die NumLock-LED blinken lassen... > Welche Numlock-LED? Wo? Eine normale Tastatur hat drei LEDs (NumLock, CapsLock, ScrollLock), die seit dem PC/AT frei angesteuert werden können. Das gilt auch für USB-Tastaturen, also hat HID diese Funktion ohne Klimmzüge. Du kannst also Informationen an "die Tastatur" schicken, ohne ein Composite-Device zu bauen oder vom Tastatur-Standardschema abzuweichen. Du musst die zu übertragende Information also nur passend codieren (z.B. als Blinkmuster) und die Tastatur irgendwie zur Auswertung überreden (Report abholen und auswerten). >> Frank E. schrieb: > Ja, muss sein, weil es sich quasi um Funktionstasten handelt und sich > deren Sinn nur jeweils zusammen mit den entsprechenden Inhalten ergibt > (z.B. Video auswählen, Video abspielen/anhalten/lauter/leiser). Ist auch > eine Platzfrage Naja, die Tastatur kann ja auch fixe Codes senden (wie die F-Tasten einer normalen Tastatur auch), und es ist die Aufgabe der Webseite, die richtige Funktion auszuwählen. Da brauchst du nicht ständig das Layout ändern... Es sei denn, du willst auch mit jeder Seite die "Beschriftung" der Tasten ändern, aber dann wäre es vermutlich sinnvoll, wenn die Seite selbst die Beschriftung wählt (und die Codes passend auswertet). Die Tastatur selbst braucht dann kaum Intelligenz und - wichtig - wird nie asynchron zur dargestellten Webseite.
Christian M. schrieb: > Frank E. schrieb: >> Die seriellen Signale des Displays gehen an einen Arduino Micro Pro, der >> als HID-Keyboard an einem Raspi angeschlossen ist. > > Wieso machst Du nicht alles mit dem Raspi? Der könnte das und hättest > diese Probleme nicht! > > Gruss Chregu Kennst du Code, der serielle Eingaben als "normale" Keystrokes ins System einspeist? Nicht nur in die Konsole, sondern z.B. auch in den Webbrowser? Dann versuche ich das ... Und was heisst "Probleme nicht haben"? 'Nen Key absenden und die gewünschte Webseite tatsächlich auch geladen bekommen, sind auch dann immer noch zwei verschiedene Dinge ...
Mick schrieb: > Frank E. schrieb: >> Aufgrund der übermittelten Keycodes soll per Javascript in mehreren auf >> dem Raspi angezeigten Websiten navigiert werden ... (<body onkeypress= >> ...>) > > Das ist ja ein Riesengebastel. Nextion kommuniziert üblicherweise über > die serielle Schnitstelle. Diese lässt sich direkt (evtl. Pegelwandler > notwendig) mit dem Raspberry über die GPIOs verbinden. > > Das Senden/Empfangen kann man mit diversen Programmiersprachen oder > Tools realisieren. Da gibt es genügend Anleitungen im Internet. Also das Auswerten von Keystrokes per Javascript ist keine "Bastelei", das funktioniert im Prinzip zuverlässig, habe ich bereits getestet. Aber getreu dem Grundsatz "was schief gehen kann, geht auch schief" hätte ich eben gerne irgend eine Rückkopplung, ob es denn tatsächlich auch geklappt hat ...
:
Bearbeitet durch User
S. R. schrieb: > > Naja, die Tastatur kann ja auch fixe Codes senden (wie die F-Tasten > einer normalen Tastatur auch), und es ist die Aufgabe der Webseite, die > richtige Funktion auszuwählen. Da brauchst du nicht ständig das Layout > ändern... > > Es sei denn, du willst auch mit jeder Seite die "Beschriftung" der > Tasten ändern, aber dann wäre es vermutlich sinnvoll, wenn die Seite > selbst die Beschriftung wählt (und die Codes passend auswertet). Die > Tastatur selbst braucht dann kaum Intelligenz und - wichtig - wird nie > asynchron zur dargestellten Webseite. Ich verstehe im Moment unseren Disput nicht - wir sind quasi einer Meinung. Also konkret geht es um eine Art Video-Abspiel-Station in einem Museum, bestehend aus einem "normalen" 24-Zoll curved Display für die Inhalte und daneben ein Nextion zur Bedienung. Auf dem Abspiel-Screen werden zunächst die Videos und eine kurze Inhaltsangabe gelistet. Man kann mit den Cursortasten auf dem Nextion (neben dem Abspiel-Screen*) hoch/runter eines auswählen und auf den Start-Button tipen. Wenn das Video läuft, ändert sich der Inhalt des Nextion zu Stop/Start, Vor/Zurück, Laut/Leise, zurück zur Übersicht ... eben mit andern Buttons und Icons. *es gibt keine curved Touchscreens, und der große Abspiel-Screen soll nach den Wünschen der Direktion kein Touch sein, deshalb das Nextion daneben
Wir haben für eines unserer Produkte ein ähnliches Szenario. Auf die HID Implementierung würde ich von Anfang an verzichten. Für deine Installation würde ich dir folgendes empfehlen. Nextoin <-> Serial <-> Raspberry Pi <-> Node.js <-> Socket.IO <-> Browser Falls du weitere Infos wünschst, helfe ich dir gerne weiter.
Quax schrieb: > Wir haben für eines unserer Produkte ein ähnliches Szenario. Auf > die HID > Implementierung würde ich von Anfang an verzichten. > Für deine Installation würde ich dir folgendes empfehlen. > > Nextoin <-> Serial <-> Raspberry Pi <-> Node.js <-> Socket.IO <-> > Browser > > Falls du weitere Infos wünschst, helfe ich dir gerne weiter. Node.js habe ich durchaus auf dem Schirm. M.W. wird dort z.B. ein Socket-Server aufgesetzt, den die Website dann aber aktiv abfragen muss ... scheint auch nicht ganz simpel. Die RS232-Schnittstelle ist wohl auf dem Raspi auch nicht so ganz einfach zuverlässig zu betreiben ... An HID (Keyboard) fasziniert mich die (scheinbare?) Einfachheit inkl. Daten und Stromversorgung auf einem (USB-) Kabel. Lediglich die verdammte Rückkopplung/Bestätigung fehlt ... zumindest mit einfachen Mitteln und ohne zus. Hardware.
Warum aber muss das "Keyboard" unterschiedliche Dinge senden, je nachdem, was für eine "Webseite" o.ä. geladen ist? Was ist dadurch gewonnen?
Rufus Τ. F. schrieb: > Warum aber muss das "Keyboard" unterschiedliche Dinge senden, je > nachdem, was für eine "Webseite" o.ä. geladen ist? > > Was ist dadurch gewonnen? Es ist kein Keyboard für Leute, die täglich am Computer arbeutem sondern eine "dynaische Bedienoberfläche", die sich der Situation anpasst. Auf einer Seite zur Auswahl von Videos hat diese (virtuelle) Tastatur z.B. nur drei Tasten: Hoch, Runter, Auswahl. Wenn dann ein Video läuft, ändert sich der notwendige Befehlsvorrat (und die dargestellten Tasten), weil z.B. Hoch/Runter keinen Sinn mehr ergeben. Statt dessen z.B. Laut/Leise, Stop/Start, zurück zur Übersicht usw.
:
Bearbeitet durch User
Frank E. schrieb: > Ich verstehe im Moment unseren Disput nicht - wir sind quasi einer > Meinung. Also konkret geht es [...] Wenn man mal den Touchscreen wegignoriert, dann passt du nicht das Layout der Tastatur an (welche Tastaturcodes gesendet werden), sondern du passt den Aufdruck der Tasten und deren Anzahl an. Das ist sinnvoll. :-) Frank E. schrieb: > Die RS232-Schnittstelle ist wohl auf dem Raspi auch nicht so ganz > einfach zuverlässig zu betreiben ... Das würde mich aber schon wundern... wichtig ist, dass du einen passenden Pegelwandler drin hast, um den Pi nicht zu grillen, und dass du dem Kernel verbietest, seine Logdaten auf die Schnittstelle zu kippen. Frank E. schrieb: > An HID (Keyboard) fasziniert mich die (scheinbare?) Einfachheit inkl. > Daten und Stromversorgung auf einem (USB-) Kabel. Lediglich die > verdammte Rückkopplung/Bestätigung fehlt ... Die wäre über die LEDs ohne Treiber machbar, ansonsten musst du in den sauren Apfel beißen und ein Composite-Device (oder was eigenes mit HID) bauen und deine Anwendung damit klarkommen lassen. Frank E. schrieb: > Kennst du Code, der serielle Eingaben als "normale" Keystrokes ins > System einspeist? Nicht nur in die Konsole, sondern z.B. auch in den > Webbrowser? Dann versuche ich das ... Mit "xdotool" kannst du synthetische Eingaben für den X-Server erzeugen und deinen Browser aus einem Shellscript fernsteuern. Ansonsten gibt es nicht-traditionelle Eingabegeräte für Leute, die klassische Eingabegeräte nicht bedienen können. Die sind üblicherweise seriell angebunden, und Microsoft hat Treiber dafür schon seit mindestens MS-DOS 5.0 mitgeliefert. Das Protokoll ist dokumentiert, aber mit solchen Geräten haben ich keine Erfahrung. Unter Linux gibt es "inputattach", mit dem man serielle Eingabegeräte (Mäuse, Trackballs, aber auch Tastaturen) dem Kernel selbst bereitstellen kann. Damit kannst du auch den Browser fernsteuern.
Frank E. schrieb: > Es ist kein Keyboard für Leute, die täglich am Computer arbeutem sondern > eine "dynaische Bedienoberfläche", die sich der Situation anpasst. Das mag ja sein, aber das lässt sich auch im Kontext der Webseite erledigen. Die Tasten senden immer den gleichen Code/das gleiche Zeichen, aber wie sie interpretiert werden, legt die Webseite (bzw. das vermutliche Javascript-Programm dazu) fest. Taste 1 sendet "A", Taste 2 sendet "B" und Taste 3 "C". Und "A" bedeutet auf der Auswahlseite halt "hoch", während es im Player "pause" bedeutet. Dazu muss nur der die Tastendrücke auswertende Teil der Software angepasst werden, und der Drops ist dauerhaft final gelutscht, ohne daß es zu Synchronisationsproblemen zwischen Tastaturbelegung und Gerät kommen könnte.
Rufus Τ. F. schrieb: > Das mag ja sein, aber das lässt sich auch im Kontext der Webseite > erledigen. Die Tasten senden immer den gleichen Code/das gleiche > Zeichen, aber wie sie interpretiert werden, legt die Webseite (bzw. das > vermutliche Javascript-Programm dazu) fest. > > Taste 1 sendet "A", Taste 2 sendet "B" und Taste 3 "C" ... Verstehe schon, aber die Anzahl der Tasten und deren Icons sind unterschiedlich, ich will keine extra Erklärung anzeigen müssen ... dann hätte ich ja auch (langweilige) mechanische Taster nehmen können :-) Im Prinzip würde mir wahrscheinlich die Info zur Numlock-LED genügen, muss mal prüfen, ob das in der keyboard-Klasse für den Arduino irgendwie durchgeleitet wird.
Frank E. schrieb: > Verstehe schon, aber die Anzahl der Tasten und deren Icons sind > unterschiedlich, So allmählich wird es klarer; Du willst also auch ein anderes Bild auf Deiner Tastatur darstellen, es geht also nicht zwingend um andere Tastencodes. Tja, dann ... ist die Variante mit Composite-USB-Device (HID-Tastatur und CDC) vermutlich eine Hilfe. Die HID-Tastatur macht nichts anderes als eine HID-Tastatur, und alle Steuerfunktionen, die der Tastatur irgendwas spezielles mitteilen, gehen über den CDC-Kanal. Weiter oben habe ich eine erweiterte Arduino-HID-Bibliothek verlinkt, mit der dieser Composite-Device-Betrieb möglich ist.
Rufus Τ. F. schrieb: > Frank E. schrieb: >> Verstehe schon, aber die Anzahl der Tasten und deren Icons sind >> unterschiedlich, > > So allmählich wird es klarer; Du willst also auch ein anderes Bild auf > Deiner Tastatur darstellen, es geht also nicht zwingend um andere > Tastencodes. Hast aber ganz schön lange gebraucht, steht bereits im Eingangsposting: " ... Meine Touch-Tastatur ändert nämlich das Layout, je nach den Inhalten der annavigierten Seite ..." Nun könnte man daüber streiten, was mit "Layout" gemeint ist. Ich meine Anzahl, Position und Beschriftung der (virtuellen) Tasten. :-) > Tja, dann ... ist die Variante mit Composite-USB-Device (HID-Tastatur > und CDC) vermutlich eine Hilfe. Die HID-Tastatur macht nichts anderes > als eine HID-Tastatur, und alle Steuerfunktionen, die der Tastatur > irgendwas spezielles mitteilen, gehen über den CDC-Kanal. > > Weiter oben habe ich eine erweiterte Arduino-HID-Bibliothek verlinkt, > mit der dieser Composite-Device-Betrieb möglich ist. Jaaaa ... da ist aber noch der Raspi, mal sehen was der dazu meint. Und die Hürde, per Javascript oder Node.js diese Methode auch nutzen zu können. Mal sehen ... Danke.
:
Bearbeitet durch User
Frank E. schrieb: > . da ist aber noch der Raspi, mal sehen was der dazu meint Was soll der dazu schon groß meinen; ein CDC wird er ansteuern können. Frank E. schrieb: > Und die Hürde, per Javascript oder Node.js diese Methode auch nutzen zu > können. Serielle Schnittstelle ansteuern. Oder einem anderen Prozess mitteilen, daß er das machen soll.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.