首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF实时图表应用程序架构

WPF实时图表应用程序架构
EN

Stack Overflow用户
提问于 2013-10-18 23:05:25
回答 3查看 7.3K关注 0票数 5

我的脑海中有以下场景:

我想(通过串口)向设备发送一些命令。此设备会向我发送一个连续的数据流(最大每秒12000个值)。

为了控制一些设置,我需要一些按钮来向设备发送命令,以便在数据流之前和期间启动/停止/更改设置。我还想有一个实时的这个数据的绘图。当然,我会过滤这些数据。另外,在某些时间戳上,会有一个信号指示我想要剪切出接收到的数据的某个窗口。

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

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

有什么办法解决这个问题吗?也许使用多个进程?

EN

回答 3

Stack Overflow用户

发布于 2013-10-18 23:38:02

你应该使用反应式扩展。它就是为这类东西而建的。

http://msdn.microsoft.com/en-us/data/gg577609.aspx

Requesting a clear, picturesque explanation of Reactive Extensions (RX)?

在第二个链接上,虽然主题是javascript,但它所说的大部分内容都是关于反应式扩展和交叉应用于C#中的Rx。

票数 3
EN

Stack Overflow用户

发布于 2013-10-18 23:21:49

我正在用实时波形(大约500‘m)制作一个类似的WPF应用程序。我有一个接收实时数据的后台线程,一个单独的线程来处理它们并为绘图准备数据(我有一个缓冲区,其中有一个屏幕的“大小”,我把准备好的值放在那里)。在UI线程中,我将波形绘制到RenderTargetBitmap,最后将其渲染到画布。这项技术让我在屏幕上有很多实时波形,并且缩放和平移没有任何问题(大约40-50帧/秒)。

如果你需要一些技术细节,请让我知道,我可以稍后与你分享。

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

顺便说一句,你有没有使用图表框架?

编辑

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

票数 2
EN

Stack Overflow用户

发布于 2014-04-25 18:40:34

它是一个商业产品,但有一个实时的WPF图表,可以处理这个用例,然后更多。请看下面的教程:

http://www.scichart.com/synchronizing-chartmodifier-mouse-events-across-charts/

这里有一个关于这种行为的现场Silverlight演示:

Sync Multichart Mouse Silverlight Demo

这个图表应该能够在高速输入值的同时处理缩放:

Realtime Performance Demo

披露:我是SciChart的所有者和技术负责人

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19452935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档