GCode Befehle für Hardware-Tasten

Nichts in der Suche gefunden? Keine Ahnung welche Kategorie euer Problem betrifft? Dann eröffnet hier ein Thema. Gegebenenfalls werden die Moderatoren das Thema dann in die entsprechende Kategorie verschieben
Linus633
Filamenttester
Filamenttester
Beiträge: 10
Registriert: Di 6. Jan 2015, 23:40
Hat sich bedankt: 3 Mal

GCode Befehle für Hardware-Tasten

Beitrag #1 von Linus633 » Do 30. Mai 2019, 11:37

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

Benutzeravatar
Nibbels
Developer
Developer
Beiträge: 2185
Registriert: Mi 17. Aug 2016, 17:01
Hat sich bedankt: 780 Mal
Danksagung erhalten: 528 Mal

Re: GCode Befehle für Hardware-Tasten

Beitrag #2 von Nibbels » Do 30. Mai 2019, 13:46

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
RF2000
Firmware Mod 1.43.99.Mod

Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW aktuell meiden.

Linus633
Filamenttester
Filamenttester
Beiträge: 10
Registriert: Di 6. Jan 2015, 23:40
Hat sich bedankt: 3 Mal

Re: GCode Befehle für Hardware-Tasten

Beitrag #3 von Linus633 » Do 30. Mai 2019, 18:10

Vielen Dank @Nibbels für die umfangreiche Antwort, ich bastel mal los und poste sobald ich erste Ergebnisse hab :)

Benutzeravatar
Nibbels
Developer
Developer
Beiträge: 2185
Registriert: Mi 17. Aug 2016, 17:01
Hat sich bedankt: 780 Mal
Danksagung erhalten: 528 Mal

Re: GCode Befehle für Hardware-Tasten

Beitrag #4 von Nibbels » Do 30. Mai 2019, 20:01

Ich hab da noch ne Info, die dir helfen könnte:
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
RF2000
Firmware Mod 1.43.99.Mod

Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW aktuell meiden.


Zurück zu „Sonstiges“