Seite 1 von 1

GCode Befehle für Hardware-Tasten

Verfasst: Do 30. Mai 2019, 11:37
von Linus633
Hallo zusammen,

da ich ganz gerne ein Octoprint Plugin erstellen würde womit man alle Hardware Tasten über Octoprint bedienen kann brauche ich eure Hilfe!

Kann mir jemand die Gcode Befehle für die Tasten nennen? (Aktuelle Community Firmware)

Speziell geht es mir dadrum irgendwie aus der Ferne den Drucker aus der Emergency Pause (Digit Max) wieder herauszubekommen, sprich die "Play" taste zu emulieren.

Ich habe schon im Code geforscht, es scheint mir so, dass es "M3029 [P]" sein sollte, also "M3029 1519" für Play.
Kann mir das so jemand bestätigen? Spiegelt das wirklich einen Hardwarebutton wieder?

Beste Grüße

Re: GCode Befehle für Hardware-Tasten

Verfasst: Do 30. Mai 2019, 13:46
von Nibbels
Hey, voll cool :)

Ich bessere da gerne nach, wenn du Probleme hast.
Der Code in der Community-FW steht hier:
https://github.com/Nibbels/Repetier-Fir ... .cpp#L7707

Code: Alles auswählen

            if (pCommand->hasP()) {
                switch (pCommand->P) {
                case UI_ACTION_OK: // 1001
                case UI_ACTION_NEXT: // 1
                case UI_ACTION_PREVIOUS: // 2
                case UI_ACTION_BACK: // 1000
                case UI_ACTION_RIGHT: // 1129

                case UI_ACTION_RF_HEAT_BED_UP: // 514
                case UI_ACTION_RF_HEAT_BED_DOWN: // 515
                case UI_ACTION_RF_EXTRUDER_RETRACT: // 517
                case UI_ACTION_RF_EXTRUDER_OUTPUT: // 516
                case UI_ACTION_RF_CONTINUE: // 1519
                case UI_ACTION_RF_PAUSE: // 1518
                {
                    Com::printFLN(PSTR("RequestMenu:Press:"), pCommand->P);
                    uid.executeAction(pCommand->P);
                }
                break;
                }
            }
Aber das hast du vermutlich schon entdeckt.

Das technische Problem bei einer Pause ist nur, dass eine volle Warteschlange die Bearbeitung neuer GCodes blockieren könnte. Ist nämlich die Pfad-Warteschlange voll, wird mit dem Auswerten und quittieren neuer GCode-Befehle unter Umständen gewartet. Also könnte der M3029 quasi zufällig erst nach dem Lösen der Pause angenommen werden.

Der GCode drückt natürlich nicht in echt den Knopf, sondern tut dasselbe, als würde die Firmware während des O/I-Pollings eine Flanke entdecken:
uid.executeAction(pCommand->P);

LG

Re: GCode Befehle für Hardware-Tasten

Verfasst: Do 30. Mai 2019, 18:10
von Linus633
Vielen Dank @Nibbels für die umfangreiche Antwort, ich bastel mal los und poste sobald ich erste Ergebnisse hab :)

Re: GCode Befehle für Hardware-Tasten

Verfasst: Do 30. Mai 2019, 20:01
von Nibbels
Ich hab da noch ne Info, die dir helfen könnte:
http://www.rf1000.de/viewtopic.php?f=7&t=2570#p26686

Dort ist ein Bild: Bild
RequestMenu: 4,29: bedeutet der Ausgabestring soll 4 Zeilen je 29 Chars darstellen. (Weil so lang der interne Puffer ist.)
Hintergrund ist soweit ich mich erinnere, dass längerer Text im 16/20-Zeichen-Display animiert gescrollt wird, aber der Puffer in dem Fall pro Zeile exakt 29 Chars hat.
Du kannst also anhand der Info ziemlich sicher mit einer Substr.-Funktion die Zeichen aus der Zeile holen.

Man kann sich theoretisch auch Grafiken zu solchen Displays über Websites wie http://avtanski.net/projects/lcd/ generieren lassen.

LG