Quick Commands - Logging Output
Ist es möglich die Antwort des Druckers nach dem ausführen eines Gcode Befehls in einer Variable zu speichern und auszugeben?
(Marlin)z.B.:
(Marlin)z.B.:
M29
--> in der Konsole folgenden Output:
--> in der Konsole folgenden Output:
Recv:21:08:20.551: Acceleration: P500.00 R500.00 T1000.00
Recv:21:15:35.573: ok (1)
--> lässt sich das auch in einer Dialogbox anzeigen um die Ausgabe bei einem Quick Command zu sehen ?
Danke
--> lässt sich das auch in einer Dialogbox anzeigen um die Ausgabe bei einem Quick Command zu sehen ?
Danke
Comments
Ausdruck:
Acceleration: P(\d*\.\d*) R(\d*\.\d*) T(\d*\.\d*)
Im GCode daten in globale variable speichern
@set global.accP @1
@set global.accR @2
@set global.accT @3
Man kann auch in einem wizard z.b. G29 senden und auf eine spezielle Antwort x sekunden warten und dann eine Funktion aufrufen zur Anzeige.
@monitorCall M204 'Acceleration: P(\d*\.\d*)*R(\d*\.\d*)*T(\d*\.\d*)*' 1000 'func1 @1 @2 @3' func2
...des geht schonmal nicht? Wie komme ich dann an die Daten?^^
Und geht das Theoretisch auch über mehrere Zeilen, wenn die Ausgabe länger wäre?
Danke
---
...Will mir später mal einen Kurzbefehl für Klipper zum Leveln vom Bed schreiben ;D
Aber so kann ich schonmal testen und üben an meinem Drucker^^
@monitorCall Name "Expression" timeoutMS hitFunction missFunction
Defines a regular expression with
Richtig wäre eherExpression
that when matched with a firmware response will call the functionhitFunction
. If the expression contained groups these groups appear as parameter to the matchFunction in that order. Server will look fortimeoutMS
milliseconds for a match and if not matched by than will callmissFunction
. After a match or timeout the test gets automatically removed.Name
is used to delete a monitor manually with@deleteMonitorCall
. Multiple calls can share same name, but than one delete on the name will delete all of them.@monitorCall M204 'Acceleration: P(\d*\.\d*)*R(\d*\.\d*)*T(\d*\.\d*)*' 1000 func1 func2
Wobei dann func1 3 parameter übergeben werden.
@func func1 p r d
@set global.accP {{local.p}}
...
Mehrzeilige ausgaben sind ein Problem, da wir immer nur Zeilenweise alles bekommen ist nicht bekannt ob eine Folgezeile zur vorherigen gehört oder nicht. Daher muss jede Zeile idealerweise sinn ergeben. Man kann aber sagenw ir hier un func1 einen @monitorCall einfügen, der die zweite Zeiler erkannt. Damit ist sie erst aktiv wenn die erste gesehen wurde. Wenn also bekannt ist das da noch eine Folgt ist das eine Gute Lösung den Rest nur dann zu interpretieren und nicht sofort auf beides zu warten.