Ich habe folgendes Szenario im Hinterkopf:WPF Echtzeit-Diagramm-Anwendung Architektur
Ich möchte (über die serielle Schnittstelle) einige Befehle an ein Gerät senden. Dieses Gerät sendet mir einen kontinuierlichen Datenstrom zurück (max. 12000 Werte pro Sekunde).
Um einige Einstellungen zu steuern, brauche ich einige Tasten, um Befehle an das Gerät zu senden, um Einstellungen vor und während des Datenstroms zu starten/zu stoppen/zu ändern. Ich möchte auch eine Echtzeit-Darstellung dieser Daten haben. Ich werde diese Daten natürlich filtern. Auch bei bestimmten Zeitstempeln gibt es ein Signal, das anzeigt, dass ich ein bestimmtes Fenster der empfangenen Daten ausschneiden möchte.
Das bedeutet, ich werde zwei Diagramme haben. Ich habe mit WPF bereits einige Fortschritte gemacht, aber jetzt, wenn ich mit dem unteren Diagramm interagiere (zoome/schwenken), friert das obere ein, was sich bemerkbar macht. Dies liegt daran, dass beide sehr oft aufgefrischt werden müssen!
Arbeit (Datenempfang/Filterung) wird mit Threads durchgeführt, aber die Aktualisierung des Plots muss innerhalb des ui-Threads erfolgen.
Irgendwelche Ideen, wie man dieses Problem löst? Vielleicht mehrere Prozesse verwenden?
Ich benutze oxyplot. Das einzige, was ich innerhalb des UI-Threads tue, ist, dem Plot Werte zu geben und es zu aktualisieren. Soweit ich weiß, muss dies im UI-Thread geschehen. Auch wenn ich die Plots nicht aktualisiere, bekomme ich hohe fps. Hast du ein Beispiel, wie du deine Wellen zeichnest? Vielleicht gibt mir das schon einen Hinweis, wie man die Dinge besser machen kann. – user2799180
Sicher werde ich morgen einige Beispiele teilen. Soweit ich weiß (und ich habe eine kleine Untersuchung in diesem Bereich gemacht), ist Oxyplot nicht sehr gut für Echtzeitdaten. Tatsächlich haben Sie nicht sehr viel Auswahl. http://dynamicdatadisplay.codeplex.com/ (http://d3future.codeplex.com/) ist gut, aber sehr veraltet. Ich würde es nicht im realen Projekt verwenden, aber für die Untersuchungen ist es sehr gut. Sie können [Direct 2D] (http://blog.rthand.com/post/2012/01/10/Realtime-graph-for-WPF.aspx) verwenden. Und du renderst Charts immer selbst, was ich mache. – MrZoidberg
Ich habe auch eine Untersuchung gemacht. Ich habe dynamicdatadisplay gefunden, aber es ist wirklich nicht auf dem neuesten Stand. Ich werde Rx und Direct 2D anschauen. Obwohl ich wirklich an Ihrer RenderTargetBitmap-Methode interessiert wäre. Ich habe schon darüber gelesen, aber nie ein gutes Beispiel gefunden. Das wäre wirklich toll. Das Empfangen und Verarbeiten mache ich auch in verschiedenen Threads. Danke vielmals! – user2799180