Pfeiltasten mit JavaScript abfangen und Skripte ausführen

  • Moin


    Für ein kleines Projekt möchte ich das eine auf dem RPi gehostete Webseite die Pfeiltasten abfängt und beim Drücken der Taste ein Skript ausführt und beim loslassen der Taste das Skript mit STRG+C beendet. Ich habe allerdings überhaupt kein Plan von JavaScript. Ich werde auch aus dieser Seite nicht ganz schlau: http://de.selfhtml.org/javascript/objekte/event.htm


    Kann einer mir das bitte erklären?! :danke_ATDE:


    VG 3D

  • Erstmal vielen Dank dir.


    Wenn ich das richtig verstehe zählt das Skript wie lange die Taste gedrückt wurde und übergibt dies dann an das PHP-Skript. Das mit dem keyup/keydown event ist mir jetzt klar, aber ich benötige eine "Live-Weiterleitung" dh. die Taste wird gedrückt Skript-NR1 wird ausgeführt = Roboter fährt vorwärts, dauerhaft in einer Schleife. Taste wird losgelassen Skript-NR1 wird mit STRG+C beendet.


    Ist das so richtig oder habe ich da was falsch interprätiert?


    VG 3D

  • Ich weis zwar nicht was dein Script macht aber wenn du nur einen "Motor" über GPIO steuerst dann kannst du auch bei
    Taste gedückt -> Setze GPIO = 1
    Taste Losgelassen -> Setze GPIO = 0
    ausführen. Das spart den Umweg über ein Shellscript.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.


  • Ich weis zwar nicht was dein Script macht aber wenn du nur einen "Motor" über GPIO steuerst dann kannst du auch bei
    Taste gedückt -> Setze GPIO = 1
    Taste Losgelassen -> Setze GPIO = 0
    ausführen. Das spart den Umweg über ein Shellscript.


    Und die Technik um Informationen Asynchron mit z.B. Php auszutauschen nennt sich Ajax.


    Also kannst du ein Javascript Event schreiben wenn a
    Taste gedrückt --> setzt wert fürs fahren über ein XMLHttpRequest();
    Taste Losgelassen --> hört aufzufahren wieder über XMLHttpRequest();

    ein Traum ist unerlässlich wenn man die Zukunft gestalten will

  • Es ist ein Roboterbausatz von 4Tronix. Die Anstreuerung soll auf Basis dieses Test-Skripts sein. Allerdings für jede Richtung ein eigenes Python-Skript.


    Tante EDIT:


    Hab das Skript von Clonix umgeschrieben:



    Geht das so oder ist da noch ein Fehler drin?


    VG

    Edited once, last by 3DFreaky ().

  • UPDATE:


    Ich habe nun ein Skript geschrieben, dass alle Befehle ausführt und das was er ausführen soll über "sys.stdin.read()" in der Commandline ausliest.



    Nun habe ich die Webseite von Clonix komplett geändert:



    Allerdings habe ich keinen Befehl gefunden um etwas in die Commandline zu posten, geschweige denn wie ich das STRG-D bzw. EOF-Signal an die Commandline übergeben bekomme, damit er das eingegebene ausführt.


    Kennt ihr die Befehle oder eine andere Möglichkeit um diese Funktion zu gewährleisten?!


    VG 3D

  • Allerdings habe ich keinen Befehl gefunden um etwas in die Commandline zu posten, geschweige denn wie ich das STRG-D bzw. EOF-Signal an die Commandline übergeben bekomme, damit er das eingegebene ausführt.


    Kennt ihr die Befehle oder eine andere Möglichkeit um diese Funktion zu gewährleisten?!


    VG 3D


    Das geht auch über exec.
    Du kannst das Script Hard abbrechen mittels dem KILL Befehl.


    Zum Beispiel :

    Code
    exec("sudo kill $(ps -A | grep deinscript.py | awk {'print $1'})")


    Macht was ?
    ps -A -> Listet die Prozesse
    grep deinscript.py -> filtert deinscript.py aus der Liste
    awk{'print $1'} -> liest den ersten Wert der Zeile, Trennzeichen = Leerzeichen, hier die ProzessID von deinscript.py


    $(ps -A | grep deinscript.py | awk {'print $1'})


    Liefert also die PID von myscript.py


    Der Befehl welcher exec übergeben wird ist also eigentlich z.B.
    sudo kill 12345


    Es gibt noch viele andere Wege, z.B. mit pidof die PID zu finden , und viele ein laufendes Script abzubrechen.
    Das ist nur ein Beispiel wie es gehen kann.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

    Edited once, last by Der_Imperator ().

  • Du hast mich falsch verstanden :D


    STRG+D bricht das Skript nicht ab. Es signalisiert dem Skript, dass es die Eingabe (zB "oben") einlesen soll.


    VG

  • hi
    Tastenkombinationen kannst Du mit && verknüfen
    [code=php]
    else if (e === 17 && e === 68 ) {strKeyCap = "Strg+d"}
    [/php]


    Gruss Clonix

    Kommentare in Scripten/Sourcecodes machen nicht nur DIR das Leben leichter ;)

  • Ich entschuldige mich an dieser Stelle für alle meine überflüssigen Fragen!
    Ich musste alles was ich mir bis jetzt gedacht habe über den Haufen werfen.


    Ich habe jetzt für jede Funktion PHP-Skripts geschrieben, die wiederum die py-Skripts über den exec()-Befehl ausführen. Die PHP Skripppts rufe ich über $.ajax() auf. Doch die html-Datei funktioniert leider nicht!



    Jemand eine Idee warum?


    VG 3D