====== GCodeInterpreter ======
[[http://www.openhardsoftware.de/ | Open Hard- & Software]]
[[http://www.openhardsoftware.de/dokuwiki | DokuWiki]]
[[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:module | Module]]
[[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:programming:programming | Programming]]
===== Überblick =====
* Lesen von GCode-Dateien
* Abbildung GCodes nach GCommands (AsciiLines)
* Abarbeitung der GCommands in verschiedenen GCode-Executoren:
* nicht mehr aktuell: CommandExecutor(BaseClass)
* nicht mehr aktuell: CommandCommon
* nicht mehr aktuell: CommandMachine - Durchreichen von GCodes(Parametern) mit SoftwareHS über Uart-Interface
* nicht mehr aktuell: CommandPlotter
* nicht mehr aktuell: CommandSimulator
* nicht mehr aktuell: CommandViewer
* basierend auf Modulen:
* RealTimePlot2D, RealTimePlot2DGCode
* RealTimePlot3D
* RealTimePlot2D3D, RealTimePlot2D3DGCode
===== ToDo =====
* OOOOOO bei Fehler im Ablauf: Anhalten aller FSMs, totaler Abort!
* Protocol lesen, speichern, visualisieren, löschen
* Gui mit Frames für:
* Status-Controls(left)
* ViewControls(right) in Tabsheets: Protocol, Plot2D, Plot3D
* Command-Controls(bottom)
* !!! ComPortsRefresh am Anfang dauert bei aktiviertem BT extrem lange !!!
* Error: Exception beim Schliessen des Programms
* Grund: for-loop in GCodeInterpreter-CBTaskGCodeExecutionOnExecute-GCodePlot2D unterbrochen
* Abhilfe: Task anstelle for-loop
* GCodeInterpreter-Setup: SelectFileDialog für GCode-File
* **OOO** Alle wichtigen Control-Attribute in Initdata laden / speichern!!!!
* Latex-Dokumentation der G2/G3-Formeln
* Auto-Aktivierung der Uart???
* print('>>> GCodeLines:') --> nach Editor auslagern?!
* print(GCodeLines)
* print('>>> GCodeList:')
* print(GCodeList.Text(), end='')
* FrameUartDataflow mit Leben füllen RXD> und TXD>
* OOO Laden einer GCode-Datei unabhängig von Conversion in dynamische Datenstrukturen (GCodelist)
===== Done =====
==== 221130 ====
* X HLP.Error globalisieren - Callback!
* X HLP.Protocol globalisieren - Callback!
* X Protocol-Ausgaben vereinheitlichen
* X OnError -> modaler Dialog,
* X Abbruch des Execute-Zyklus
* Download : {{:module:programming:gcodeinterpreter:2211301323_gcodeinterpreter_02v11.zip | 2211301745_GCodeInterpreter_02V12.zip}}
==== 221130 ====
* X Feedrates aus gcode-Source übernehmen!!!
* Download : {{:module:programming:gcodeinterpreter:2211301323_gcodeinterpreter_02v11.zip | 2211301323_GCodeInterpreter_02V11.zip}}
==== 221130 ====
* X 'ok' nicht immer allein als Zeilen-Antwort -> if ('ok' in RxLine): State...
* X G3-GCodes verursachen sehr lange Hardware-Verzögerungen - Fehler???? (erst einmal kommentieren)
* ??? GCodeExecutor: while not(IsBusy) -> while not(IsIdle) - aber warum?????
* !!! auf jeden Fall KEINE Hänger mehr ???!!!
* WICHTIG: bisher müssen die Feedrates im gcode-Text mit den Vorgaben vom Programm übereinstimmen!!!
* Download : {{:module:programming:gcodeinterpreter:2211301154_gcodeinterpreter_02v10.zip | 2211301154_GCodeInterpreter_02V10.zip}}
==== 221129 ====
* X Aktualisierung von GUIControls PA / PT bei Abarbeitung GCode (Fehler PA)
* X ProtocolGlobal <- all comments / debugs
* X Übergabe der (geladenen und konvertierten) GCodeList als DDS nach GCodeExecutor:
* X Aufarbeiten / Verstehen des Setup-Window
* |||||| bestehendes Problem: extreme Wartezeiten bei (manchen) G1-GCodes - warum????
* Download : {{:module:programming:gcodeinterpreter:2211291820_gcodeinterpreter_02v0b.zip | 2211291820_GCodeInterpreter_02V0B.zip}}
==== 221129 ====
* X Start GCodeExecutor: Löschen aller Grafiken (GCodeExecutor:GCodeSimulator.Clear())
* X bei aktiven Plots werden Menu-Funktionen nicht ausgeführt
* X aktive Plots werdenn bei ProgrammEnde nicht beendet
* X FiFo mit Task und CGCode-Einträgen
* X GCode-List wird als Fifo abgearbeitet und dabei vernichtet
* XXX dort Fifo-Abarbeitung mit Task, Löschung jedes ausgeführten GCodes
* X FiFo mit Task und CGCode-Einträgen
* X Start: konsequentes Abarbeiten(Löschen) der einzelnen GCodes
* X Abort: Abbruch der GCode-Abarbeitung, Löschen aller Resteinträge
* X Start: konsequentes Abarbeiten(Löschen) der einzelnen GCodes, Löschen der Plots
* X Abort: Abbruch der GCode-Abarbeitung, Löschen aller Resteinträge (GCodeExecutor/Simulator/...)
* X Ende des Programms: Abort in GCodeExecutor
* || Laden eines GCode-File mit FileOpenDialog
* || Dynamische GCode-List bleibt NICHT im Speicher
* XX Einbezug von Plot2D / Plot3D / GCodeProtocol in die Abarbeitungskette
* Download : {{:module:programming:gcodeinterpreter:2211291304_gcodeinterpreter_02v0a.zip | 2211291304_GCodeInterpreter_02V0A.zip}}
==== 221128 ====
* X GCodeHadware mit in GCodeExecutor einbeziehen,
* X Vorlage (alte Version): 2210191701_GCodeInterpreter_01V44_g0123ijr
* X korrekte AR.gcode-Datei mit allen M-Commands (vgl. Original) verarbeiten!
* || Hardware-Fehlerbehandlung bei "Error:xx" -> GUI
==== 221128 ====
* X LoadExecuteGCodeFile und AbortExecutionGCodeList
* Download : {{:module:programming:gcodeinterpreter:2211281540_gcodeinterpreter_02v08.zip | 2211281540_GCodeInterpreter_02V08.zip}}
==== 221127 ====
* X ProtocolGlobal als erstes Tabsheet
* X doppelter Aufruf: ReadInitdata
* X Application-Protocol in ProtocolGlobal (GCodeSimulator)
* X ExecutionGCodeList -> ProtocolGlobal
==== 221127 ====
* X || Verbesserungen, Fehler beim Start ohne Console
* Download : {{ :module:programming:gcodeinterpreter:2211271203_gcodeinterpreter_02v02.zip |2211271203_GCodeInterpreter_02V02.zip}}
==== 221126 ====
* X Wiederaufnahme der aktuellen GCodeInterpreter-Version
* X (Asynchrone) Korrekturen an Plot2D, Plot3D
* X Plot2D, Plot3D mit mehreren Kurven angepasst
* neue Darstellung Plot2D, Plot3D
* Download : {{:module:programming:gcodeinterpreter:2211262044_gcodeinterpreter_02v01.zip | 2211262044_GCodeInterpreter_02V01.zip}}
==== 221125 ====
* X Idee: nochmaliger Versuch, Plot2D(hat bisher schon geklappt) und Plot3D(hat bisher nicht geklappt)
* XXX einzeln als Module vom TimeSlotRefresh auf AsynchroneReplot umzustellen
* -> X Plot2D: [[module:programming:realtimeplot2d:realtimeplot2d | RealTimePlot2D]]
* -> X Plot3D: [[module:programming:realtimeplot3d:realtimeplot3d | RealTimePlot3D]]
==== 221124 ====
* Fehler durch TimeSlot-Refresh bei Plot2D und Plot3D nicht behebbar
==== 221123 ====
* Versionen jünger als 2211141929_GCodeInterpreter_02V002 sind fehlerhaft:
* Problem bei Stoppen des Timers aus einem anderen Thread (???)
* Idee: ab 2211141929_GCodeInterpreter_02V002 alle höheren Änderungen wieder stückweise einbauen...
==== 221122 ====
* X btnLoadGCodeFile immer 'normal'
* X btnStartExecution
* X 'disable' : keine GCodeList-Elemente nach dem Laden (mit Callback über LoadGCodeFile)
* X 'normal' : mindestens ein GCodeList-Elemente nach dem Laden (mit Callback über LoadGCodeFile)
* X GCodeReport: Ausgabe GCodeList (nach Konvertierung aus GCodeFile)
* X GCodeReport: WriteToFile und ClearAll (über Callback)
* X Callback OnStart/AbortExecution
* X Übergabe der (geladenen und konvertierten) GCodeList als DDS nach GCodeExecutor
* Download : {{:module:programming:gcodeinterpreter:2211221859_gcodeinterpreter_02v006.zip | 2211221859_GCodeInterpreter_02V006.zip}}
==== 221121 ====
* X Menu-Striche beseitigen mit 'filemenu = Menu(menubar, tearoff=0)'
* X Eigenes Protocol-Fenster(Tabsheet) als letztes Tabsheet
* X Menu-Punkte ProtocolWriteToFile und ProtocolClearAll über Callback (FrameApplication.tbsProtocol, Main)
* X ProtocolUart <- UartDataFlow
* X ProtocolGlobal <- Protocol
* Download : {{:module:programming:gcodeinterpreter:2211211900_gcodeinterpreter_02v006.zip | 2211211900_GCodeInterpreter_02V006.zip}}
==== 221120 ====
* X Uart: Einbau der Schnittstellenkommunikation
* X Uart-Protocol im UartDataflow-Frame
* Download : {{:module:programming:gcodeinterpreter:2211201945_gcodeinterpreter_02v005.zip | 2211201945_GCodeInterpreter_02V005.zip}}
==== 221120 ====
* Vorbereitung der GUI:
* X basierend auf alter Version {{ :module:programming:gcodeinterpreter:2210191701_gcodeinterpreter_01v44_g0123ijr.zip | 2210191701_GCodeInterpreter_01V44_g0123ijr.zip}}
* X Reintegration Uart und Uart-Konfiguration (in Tabsheet)
* Download : {{:module:programming:gcodeinterpreter:2211201719_gcodeinterpreter_02v004.zip | 2211201719_GCodeInterpreter_02V004.zip}}
==== 221114 ====
* Basierend auf [[module:python:framehierarchy:framehierarchy|FrameHierarchy]] Neudefinition von UserControls
* entwickelt unter [[module:programming:framecontrols:framecontrols|FrameControls]]
* Download : {{:module:programming:gcodeinterpreter:2211141929_gcodeinterpreter_02v002.zip | 2211141929_GCodeInterpreter_02V002.zip}}
{{:module:programming:gcodeinterpreter:2211142003_gcodeinterpreter.png?600 | 2211142003_GCodeInterpreter.png}}
{{:module:programming:gcodeinterpreter:2211141929_gcodeinterpreter_02v002.mp4?600 | 2211141929_GCodeInterpreter_02V002.mp4}}
==== 221113 ====
* Neuauflage GCodeInterpreter basierend auf: {{:module:programming:realtimeplot2d3dgcode:2211121943_realtimeplot2d3dgcode_01v01.zip | 2211121943_RealTimePlot2D3DGCode_01V01.zip}}
* aus "altem" GCode-Interpreter Übernahme UartSetup-Frames:
* WindowMain -> FrameApplication
* X Exit -> WMOnDeleteWindow
* X AboutDialog
* x Read/WriteInitfile
* Neuauflage der Gui:
* Gui mit Frames für:
* x Status-Controls(left)
* x ViewControls(right) in Tabsheets: Protocol, Plot2D, Plot3D
* x Command-Controls(bottom)
* Gui mit place()-Manager
* Protocol nicht an Gui-Bottom anfügen, sonder als eigenes Tabsheet vom View-Notebook
* Download : {{:module:programming:gcodeinterpreter:2211131653_gcodeinterpreter_00v05.zip | 2211131653_GCodeInterpreter_00V05.zip}}
{{:module:programming:gcodeinterpreter:2211131653_gcodeinterpreter_00v05.png?400 | 2211131653_GCodeInterpreter_00V05.png}}
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\
so könnte prinzipiell die Gui von GCodeInterpreter aussehen: \\
- links: States \\
- rechts oben:: Views \\
- rechts unten: Commands \\
(aus Zeitgründen wird das aktuelle Fenstermass fixiert, später dann freie Skalierung...) \\
\\
==== 221025 ====
* FrameHierarchy - GCodeInterpreter (RealTimePlot2D)
* GcodeInterpreter: Neu: Einführung einer Protocollist im unteren Teil von GCI
* marked: join -> hangsup
* OnWindowDelete
==== 221024 ====
* FrameHierarchy als Basis-Gerüst für GCodeInterpreter
* FrameHierarchy mit RealTimePlot2D
* GcodeInterpreter: Menu
* GcodeInterpreter: Read/WriteInitdata
==== 221022 ====
* nach [[module:python:taskevent:taskevent | TaskEvent]] nun (nochmaliger, erneuerter) Einbau von DualThread und Event in GCodeInterpreter
* Ausgang: {{:module:programming:gcodeinterpreter:2210191701_gcodeinterpreter_01v44_g0123ijr.zip | 2210191701_GCodeInterpreter_01V44_g0123ijr.zip}}
* Disable aller PLotFunktionen: comment in FrameGCodePlot2D, NC GCodePlot2D
==== 221021 ====
* Arzt bis 15:00 Uhr, jetzt Module-Task-Event [[module:python:taskevent:taskevent | TaskEvent]]
==== 221020 ====
* (Re)Einbau RealTimePlot-Funktionen
* Timing-Fehler im DualTask-Betrieb lokalisiert und reproduzierbar sicher umgangen:
* !!! eine Thread-Execute-Methode darf KEINE Leerzeilen enthalten - warum auch immer?! !!!
* Siehe [[module:programming:realtimeplot2d:realtimeplot2d|RealTimePlot2D]]
* Morgen: Test auf Lösung im Plotverzug von GCodeInterpreter!
==== 221020 ====
* (Re)Einbau TaskRefresh
[1666277036.9053943] *** RealTimePlot2DRefreshData: begin
...
[1666277036.9063644] ~~~ OnTask[TaskRefresh]-Execute: begin
---
---
[1666277038.9793437] ~~~ OnTask[TaskRefresh]-Execute: end
[1666277038.9953027] --- Task[TaskRefresh]-JOINed...
...
[1666277038.9953027] ~~~ OnTask[TaskRefresh]-Execute: begin
---
---
[1666277041.091677] ~~~ OnTask[TaskRefresh]-Execute: end
[1666277041.091677] --- Task[TaskRefresh]-JOINed...
[1666277041.091677] ### OnTask[TaskExecute]-AbortExecute:=True
[1666277041.091677] --- Task[TaskRefresh]-JOINed...
[1666277041.092278] --- Task[TaskExecute]-JOINed...
[1666277041.0971415] *** RealTimePlot2DRefreshData: end
==== 221020 ====
* RealTimePlot2DTaskTask:
* Task OHNE while-loop, while, falls benötigt in: OnTaskMainExecute
* TaskExecute ruft periodisch TaskRefresh auf...
* WICHTIG - flushen aller Ausgaben (base Main):
* Abort mit join versehen, zuvor in OnAbort Main-Task beenden!
* Einbau von join()
* thread.daemon = False (default) : sonst kein Warten auf Thread-Ende!
WICHTIG - flushen aller Ausgaben (base Main):
import sys
sys.stdout.flush()
[1666275018.8945642] *** RealTimePlot2DRefreshData: begin
[1666275018.8945642] ### OnTask[TaskExecute]-waiting: begin
...
...
[1666275022.4725285] ### OnTask[TaskExecute]-AbortExecute:=True
[1666275022.4725285] --- Task[TaskExecute]-JOIN: begin
[1666275022.9286542] ### OnTask[TaskExecute]-waiting: end
[1666275022.9286542] --- Task[TaskExecute]-JOIN: end
[1666275022.9366367] *** RealTimePlot2DRefreshData: end
==== 221020 ====
* leider Problem: Niedrige Darstellungs-Geschwindigkeits bei Plot2D im MultiTasking(GCodeInterpreter):
* ThreadExecute - ThreadPlot - gca, draw
* 0. Sicherung: GCodeInterpreter
* 1. Idee: RealTimePlotTaskTask, vermutlich volle Geschwindigkeit
* 2. Idee: RealTimePlotTaskTask &rightarrow& GCodeInterpreter - hoffentlich volle Geschwindigkeit
* 3. Idee: Urversion GCodeInterpreter wieder mit voller Geschwindigkeit herstellen
==== 221019 ====
* X G2/G3 : bisher: IJ-Vorgabe -> berechne R
* X G2/G3 : jetzt: R-Vorgabe -> berechne IJ
* [[module:programming:gcodeinterpreter:gcodeinterpreterg2g3 | GCodeInterpreter - Theorie G2/G3]]
* Download : {{:module:programming:gcodeinterpreter:2210191701_gcodeinterpreter_01v44_g0123ijr.zip | 2210191701_GCodeInterpreter_01V44_g0123ijr}}
==== 221018 ====
* X FindExtremaX/Y/Z für PlotRangeX/Y/Z
* Download : {{:module:programming:gcodeinterpreter:2210181026_gcodeinterpreter_01v42_linesextrema.zip | 2210181026_GCodeInterpreter_01V42_linesextrema.zip}}
* .. G00, G01 : Erzeugung von (Zwischen-)Punkten, welche in einem Extra-Task bei der CodeExecution sequentiell abgearbeitet werden... (vorher Sicherung GCodeInterpreter_514.zip)
* X Plot aller (durch einen GCode) erzeugten Zwischenpunkte: keine weitere Abarbeitung von GCodes erlaubt $\Rightarrow$ Schleife in GCodePlot2D !!!
* X jetzt endlich Moving in Arcs (based on I and J - R still missing!)
* X G2 und G3 mit I,J (ohne R)
* man beachte die Kreisbögen in der FreeCad-Vorlage (-> GCode) und Interpretation/Plot des GCodes!
* Download : {{:module:programming:gcodeinterpreter:2210181936_gcodeinterpreter_01v42_arcposnegworadius.zip |2210181936_GCodeInterpreter_01V42_arcposnegworadius.zip}}
{{:module:programming:gcodeinterpreter:2210181947_rectangles.png?600 | 2210181947_Rectangles.png}}
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\
{{:module:programming:gcodeinterpreter:2210181936_GCodeInterpreter_01V42.mp4?600 | 2210181936_GCodeInterpreter_01V42.mp4}}
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\ \\ \\
==== 221017 ====
* Generierung der korrekten Plot2D-Daten aus GCode-Folge:
* Aktualiserung Field-Variablen (in EndDataTypes):
* self.ParameterX = 0.0 # [mm]
* self.ParameterY = 0.0 # [mm]
* self.ParameterZ = 0.0 # [mm]
* self.ParameterE = 0.0 # [mm]
* self.ParameterF = 100.0 # [mm/s]
* Zeichnen ausschliesslich von Geraden
==== 221017 ====
* X Zusammenführung:
* RealTimePlot2DRefreshData : {{:module:programming:realtimeplot2d:2210161913_realtimeplot2drefreshdata_01v02.zip | 2210161913_RealTimePlot2DRefreshData_01V02.zip}}
* GCodeInterpreter : aktuelle Version (2210161700_GCodeInterpreter_preplotdualtask)
* X Ziel: stückweises Zeichnen der GCode-Curve mit gezieltem programmtechnischen Refresh des Plot2D
* X Ersetzen aller RTPlot2D-Elemente durch neue RealTimePlot2DRefreshData-Elemente
* X Einführung WindowMain.IsActive(zuvor:WindowMain.IsBusy) zur Verhinderung von Exceptions bei deleted WindowMain
* O WindowMain.py und MainWindow = CWindowMain(...)
* .. Verschmelzung OnTaskRefreshData mit altem Plot2DRefresh
* Ergebnis: GCodeInterpreter mit Verabeitung von GCodeProtocol, GCodeHardware, GCodePlot2D(noch Pseudodaten!):
* Download : {{:module:programming:gcodeinterpreter:2210171757_gcodeinterpreter_01v41.zip | 2210171757_GCodeInterpreter_01V41.zip}}
* {{:module:programming:gcodeinterpreter:2210171757_gcodeinterpreter_01v41.mp4?600 | 2210171757_GCodeInterpreter_01V41.mp4}}
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\
==== 221016 ====
* Versuch fehlgeschlagen: CCommand - CGCommand/CMCommand mit GetLine/GetReport-Methoden
* Erweiterung von RealTimePlot auf [[module:programming:realtimeplot2d:realtimeplot2d | RealTimePlot2D - RealTimePlotDualTask]]:
* 1. Task PlotAutomation : View-Refresh der aktuellen Plotdaten
* 2. Task PlotData : Data-Refresh der akutellen Plotdaten
==== 221015 ====
* Beginn Einbau : RealTimePlot2D in GCodeInterpreter : basic realisiert mit Übertrag Demo-RealTimePlot2D
* Zeichnen einer G2/G3-Curve mit CCR(positiv) and CR(negativ) :
* [[module:programming:gcodecurve:gcodecurve|GCodeCurve]]
==== 221013 ====
* **OOO** Tabsheet Execution: Checkboxes für alle Arten der ExecuteMachines
* zweitens: Darstellung von RealTimePlot3D-Frame in GCodeInterpreter
* Globale Setup-Tabsheet(s)
* Erzeugung von FrameSetup
* Erzeugung von FrameSetupGlobal
* / Checkboxes: GCodeReport, GCodePlot2D, GCodePlot3D, GCodeHardware
* / Erzeugung von FrameSetupUart
* State Uart -> CB für Checkbox GCodeHardware!
* Austausch: SetupUart vor Setup... vor SetupGlobal
* Main / FrameSetup-FrameSetupGlobal : OnStartExecution
* Main / FrameSetup-FrameSetupGlobal : OnAbortExecution
* Download : {{:module:programming:gcodeinterpreter:2210131953_gcodeinterpreter_01v32_reporthardware.zip | 2210131953_GCodeInterpreter_01V32_reporthardware.zip}}
==== 221012 ====
* Wiederaufnahme GCodeInterpreter nach Krankenhaus
* zuerst: Darstellung von ReportData-Frame in GCodeInterpreter
* X FrameGCodeReport aktivieren
* X SendReport : Anfügen einer ReportLine
* X FrameGCodeReport
* X FrameGCodeHardware
* Download : {{:module:programming:gcodeinterpreter:2210122010_gcodeinterpreter_01v31_filehardwarereport.zip | 2210122010_GCodeInterpreter_01V31_FileHardwareReport.zip}}
==== 221005 ====
* Reorder GCodeInterpreter
* Entnahme Task aus GCodeHardware
* GCodeHardware(Uart) mit zeilenweise Abarbeitung einer GCodeLine
* GCodeReport mit zeilenweise Abarbeitung einer GCodeLine
* GCodeReport : M/G-Code mit Comment-Ergänzung
==== 221004 ====
* (Klinik, erst ab 17 Uhr)
* [[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:software:openplc:openplc | Update OpenPLC]]
==== 221003 ====
* GCodeFile $\rightarrow$ CGCodeConverter $\rightarrow$ GCodeLines
* GCodeLines $\rightarrow$ CGCodeConverter $\rightarrow$ GCodeList
* CGCodeConverter arbeitet GCodes in GCodeList ab
* CGCodeConverter ruft über CB CGCodeHardware / CGCodeSimulator auf mit Software-HS
* jetzt Versuch, GCodelist (als Ergebnis von Commandlist) in einem Thread abzuarbeiten
* dabei werden die einzelnen GCode**lines** (typisch ein GCode-Command mit Parametern, Kommentar)
* mit CB sequentiell zu den Interpreter-Modulen gereicht
==== 221002 ====
* Modul : [[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:programming:realtimeplot2d:realtimeplot2d | RealTimePlot2D]]
* Modul : [[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:programming:realtimeplot3d:realtimeplot3d | RealTimePlot3D]]
* gedacht als Templates für GCodeInterpreter - Command/GCode-Simulator/Viewer
==== 221001 ====
* Übernahme der Plot3D und Curve3D files aus '2208232227_Plot3DOrbitalProjection_01V01'
* An alle Command-Classes wird die zuvor erzeugte GCodelist übergeben:
* CommandMachine(Uart) / CommandMachine.Start(GCodelist)
* CommandDisplay(Canvas(???)) / CommandDisplay.Start(GCodelist)
* Umsortierung Command-Classes:
* CommandExecutor -> CommandConverter : GCommandFile -> GCodelist
* CommandConverter.BuildGCodeFromCommandlist(Commandlist)
* KEINE Basis-Class mehr, nur noch parallele eigenständige Classes!
* Wiederherstellung des Uno-Pinout-Led-Breadboards
* Led-Anzeige der Stepper-Signale
* ??? noch keine Spindle-Dir/Pwm-Anzeige (M3/M5), warum auch immer
* Download : {{:module:programming:gcodeinterpreter:2210011129_gcodeinterpreter_pregrafic.zip | 2210011129_GCodeInterpreter_pregrafic.zip}}
==== 220930 ====
* Versuch Umsortierung Command-Classes
* CommandExecutor : GCommandFile -> GCodelist
* Basis-Class mit Thread-Verwaltung
* Download : {{:module:programming:gcodeinterpreter:2209301003_gcodeinterpreter_01v21.zip | 2209301003_GCodeInterpreter_01V21.zip}}
* Download : {{:module:programming:gcodeinterpreter:2209302131_gcodeinterpreter_01v22.zip | 2209302131_GCodeInterpreter_01V22.zip}}
==== 220929 ====
* Software-HS aller GCommands mit ok/ok über Uart
* Abfangen aller Fehler! Fehler führen immer zum Ende des Porgramms!
* Einbau Uart
* Download : {{:module:programming:gcodeinterpreter:2209291537_gcodeinterpreter_00v17.zip | 2209291537_GCodeInterpreter_00V17.zip}}
==== 220928 ====
* Einbau Task
* Command-Module:
* CommandExecutor
* CommandCommon
* CommandMachine
* CommandPlotter
* CommandSimulator
* CommandViewer
* Download : {{:module:programming:gcodeinterpreter:2209282205_gcodeinterpreter_00v16.zip | 2209282205_GCodeInterpreter_00V16.zip}}
==== 220927 ====
* Download : {{:module:programming:gcodeinterpreter:2209270738_gcodeinterpreter_00v11.zip | 2209270738_GCodeInterpreter_00V11.zip}}
* Wiederaufnahme von {{:module:programming:gcodeinterpreter:221001118_gcodeinterpreter_01v23.zip | 221001118_GCodeInterpreter_01V23.zip}}
-----
[[http://www.openhardsoftware.de/ | Open Hard- & Software]]
[[http://www.openhardsoftware.de/dokuwiki | DokuWiki]]
[[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:module | Module]]
[[http://www.openhardsoftware.de/dokuwiki/doku.php?id=module:programming:programming | Programming]]