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
GCode Befehle für Hardware-Tasten
- Nibbels
- Developer
- Beiträge: 2264
- Registriert: Mi 17. Aug 2016, 17:01
- Has thanked: 831 times
- Been thanked: 599 times
Re: GCode Befehle für Hardware-Tasten
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
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
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;
}
}
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.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Re: GCode Befehle für Hardware-Tasten
Vielen Dank @Nibbels für die umfangreiche Antwort, ich bastel mal los und poste sobald ich erste Ergebnisse hab
- Nibbels
- Developer
- Beiträge: 2264
- Registriert: Mi 17. Aug 2016, 17:01
- Has thanked: 831 times
- Been thanked: 599 times
Re: GCode Befehle für Hardware-Tasten
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:
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
http://www.rf1000.de/viewtopic.php?f=7&t=2570#p26686
Dort ist ein 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.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.
Firmware Mod 1.45.00.Mod - geht SD wieder 100%?
Bitte 1.42.17 bis 1.42.21 meiden!
SD-Druck mit der Community-FW <= 1.43.99 aktuell meiden.