WPF实时图表应用程序架构

use*_*180 5 c# wpf charts prism

我有以下几种情况:

我想(通过串口)向设备发送一些命令.该设备确实向我发回连续的数据流(每秒最多12000个值).

为了控制某些设置,我需要一些按钮来向设备发送命令,以便在数据流之前和期间启动/停止/更改设置.另外,我想要获得这些数据的实时情节.我当然会过滤这些数据.此外,在某些时间戳处,将存在指示我想要切出所接收数据的某个窗口的信号.

这意味着我将有两个图表.我使用WPF已经取得了一些进展,但现在当我与下方图表进行交互(缩放/平移)时,上面的一个会显着冻结.这是因为两者都经常刷新!

使用线程完成工作(数据接收/过滤),但是必须在ui线程内完成绘图的更新.

任何想法如何解决这个问题?也许使用多个流程?

在此输入图像描述

MrZ*_*erg 2

我正在制作一个带有实时波形(大约 500Hz)的类似 WPF 应用程序。我有一个接收实时数据的后台线程,一个单独的线程来处理它们并准备用于绘制的数据(我有一个缓冲区,其中包含屏幕的“大小”,我在其中放置准备好的值)。在 UI 线程中,我将波形绘制到 RenderTargetBitmap 最终渲染到 Canvas。这项技术允许我在屏幕上显示大量实时波形,并且可以毫无问题地进行缩放和平移(大约 40-50 fps)。

如果您需要一些技术细节,请告诉我,我稍后可以与您分享。

我认为你的 UI 线程中有一些代码没有很好地优化或者可以移动到后台线程。

顺便说一句,你使用任何图表框架吗?

编辑

philologon是对的,你应该使用 Rx 来获取实时数据,它大大简化了代码。我也在我的项目中使用它们。