====== RealTimePlot2D ====== ===== Überblick ===== * Darstellung von PlotDaten mit MatPlotLib in zwei Dimensionen * Animate -> Callback : OnRefreshPlot mit: * Skalierung der Achsen (X/YLimitL/H) in Abhängigkeit der zu plottenden Werte * Refresh der X/Y-Vektor-Kurvenwerte * Gestaltung der Plot-Attribute : Color, linewidth, ... * Vorbereitung für GCodeInterpreter - CommandViewer / CommandSimulator ===== ToDo ===== --- ===== Done ===== ==== 221126 ==== * nur noch AsynchronPlot(Rescale), keine Timer-Updates mehr!!! * Download : {{:module:programming:realtimeplot2d:2211261058_realtimeplot2d_03v01.zip | 2211261058_RealTimePlot2D_03V01.zip}} ==== 221026 ==== * Neuer Versuch (näher an der Problematik von GCodeInterpreter): * TaskCreate erzeugt in fortlaufender Folge (GCode-)Plotdaten (N GCodes) * TaskCreate gibt nach jedem GCode Signal an den TaskDisplay, aktuelle GCode-Daten in RealTime darzustellen * Parameter: DisplayRefreshRate = 10 pps, FormFeed = 100 mm/s * GCode: Länge der gefahrenen Strecke (Arc/Line) * TaskDisplay: Simulation der abgefahrenen Strecke S(Arc/Line) * TaskDisplay: jeder neue GCode triggert TaskDisplay * Erste Version: keine Simulation der GCode-Fahrstrecke, sondern Zeichnen der gesamten Strecke (SollStrecke) * Download : {{ :module:programming:realtimeplot2d:2210261627_realtimeplot2d_01v33.zip | 2210261627_RealTimePlot2D_01V33.zip}} ==== 221026 ==== * Versuch: DualTask mit TripleIndex * TaskA: direkte Erzeugung von N Plotdaten, Starte TaskB, warte auf vollständige Abarbeitung * TaskB: Start von TaskA mit N Plotdaten, Variation IndexActual : IndexLow .. IndexHigh * TaskB: IndexLow : StartIndex aktueller Satz der N Plotdaten * TaskB: IndexActual : IndexLow $\leq$ IndexActual : Intervall der fertig dargestellte PlotDaten * TaskB: IndexHigh : IndexActual $\leq$ IndexHigh : Interval der unfertig dargestellten Plotdaten * OnWMDeleteWindow, OnFrameApplicationDelete * Download : {{:module:programming:realtimeplot2d:2210261507_realtimeplot2d_01v32_createdisplaydual.zip | 2210261507_RealTimePlot2D_01V32_createdisplaydual.zip}} ==== 221023 ==== * Erneuerung der Programmstruktur mit den aktuellen Ergebnissen von: [[module:python:framehierarchy:framehierarchy|Module - Python - FrameHierarchy]] * Mit neuer FrameHierarchy volle Geschwindigkeit auch bei DualTask mit einstellbaren Thread-Sleeps * Download : {{:module:programming:realtimeplot2d:2210231952_realtimeplot2d_01v22_dualtask.zip | 2210231952_RealTimePlot2D_01V22_dualtask.zip}} ==== 221020 ==== * Timing-Fehler tritt auf bei sequentieller Anordnung zweier Tasks: TaskAction und TaskRefresh * verlangsamt Plot extrem und nicht akzeptierbar * Grund: eine Thread-Execute-Methode darf KEINE Leerzeilen enthalten - warum auch immer?! * Timing-Fehler im DualTask-Betrieb lokalisiert und reproduzierbar sicher umgangen: * Morgen: Test auf Lösung im Plotverzug von [[module:programming:gcodeinterpreter:gcodeinterpreter|GCodeInterpreter]]! * Download : {{ :module:programming:realtimeplot2d:2210202121_realtimeplot2dtasktask_01v13.zip | 2210202121_RealTimePlot2DTaskTask_01V13.zip}} * {{:module:programming:realtimeplot2d:2210202108_rtptasktasktry.mp4?600 | 2210202108_RTPTaskTaskTry.mp4}} \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ==== 221016 ==== * noch besser: nur noch ein Task: TaskRefreshData in RealTimePlot2DRefreshData * Download : {{:module:programming:realtimeplot2d:2210161913_realtimeplot2drefreshdata_01v02.zip | 2210161913_RealTimePlot2DRefreshData_01V02.zip}} * {{:module:programming:realtimeplot2d:2210161913_realtimeplot2drefreshdata_01v02.mp4?600 | 2210161913_RealTimePlot2DRefreshData_01V02}} \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ==== 221016 ==== * PlotDataReview : * View-Refresh der aktuellen Plotdaten (schon vorhanden durch Plot-Automation) * ---- * PlotDataRefresh : * Data-Refresh der akutellen Plotdaten (über Task-Class einrichten) * ---- * RealTimePlotDualTask: * 1. Task PlotDataReview * 2. Task PlotDataRefresh * Basis : {{ :module:programming:realtimeplot2d:2210021804_realtimeplot2d_01v02_framecyclic.zip | 2210021804_RealTimePlot2D_01V02_framecyclic}} ==== 221002 ==== * {{:module:programming:realtimeplot2d:2210021141_realtimeplot2d_00v11.zip | 2210021141_RealTimePlot2D_00V11.zip}} * {{:module:programming:realtimeplot2d:2210021246_realtimeplot2d_01v01_timeline.zip | 2210021246_RealTimePlot2D_01V01_timeline.zip}} * RealTimePlot mit fortschreitender X-Timeline $\rightarrow$ RTP mit fixierten X/YLimtL/H-Werten: * {{:module:programming:realtimeplot2d:2210021804_realtimeplot2d_01v02_framecyclic.zip | 2210021804_RealTimePlot2D_01V02_framecyclic}} * {{:module:programming:realtimeplot2d:2210021804_realtimeplot2d_01v02.mp4?600 | 2210021804_RealTimePlot2D_01V02.mp4}} \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ ==== 221001 ==== * {{:module:programming:realtimeplot2d:2210011430_realtimeplot2d_00v01.zip | 2210011430_RealTimePlot2D_00V01}} * {{:module:programming:realtimeplot2d:2210020245_realtimeplot2d_00v05.zip | 2210020245_RealTimePlot2D_00V05.zip}} * {{:module:programming:realtimeplot2d:2210020418_realtimeplot2d_00v07.zip | 2210020418_RealTimePlot2D_00V07.zip}} * {{:module:programming:realtimeplot2d:2210021132_realtimeplot2d_00v08_baseguiwithoutanimate.zip | 2210021132_RealTimePlot2D_00V08_BaseGuiWithoutAnimate.zip}} * {{:module:programming:realtimeplot2d:2210021135_realtimeplot2d_00v10.zip | 2210021135_RealTimePlot2D_00V10.zip}}