====== 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]]