子曰 发表于 2015-10-19 16:36:00

chart 响应串口消息,绘图时丢数据

如果在串口响应消息里面写:
             this.Dispatcher.Invoke(new System.Action(() =>
            {
                PaintData(Data, curDataCnt);
            }));
数据是不会丢,但整个ui界面就卡死了,点别的按钮没反应。

用定时器DispatcherTimer 设定时间间隔为 Interval = TimeSpan.FromMilliseconds(0.1) ; refreshTimer.Tick += (s, e) => PaintData();
chart绘图就会出现丢数据的情况。
串口出来的数据是每秒100点。 请问如何解决?

Alice 发表于 2015-10-19 18:00:00

回复 1楼子曰的帖子

谢谢对该问题的反馈。
仅从您的描述来看,不能重现您的问题,为了帮助您解决问题,请提供重现问题的demo.

子曰 发表于 2015-10-20 10:37:00

回复 2楼Alice的帖子

这个涉及到硬件串口数据,不好做demo。
简而言之,就是怎么在串口响应消息里面操作chart?

Alice 发表于 2015-10-20 11:22:00

回复 3楼子曰的帖子

很抱歉不太理解您是怎么实现模拟硬件发送数据至本机串口,并且可以第三方软件打开该串口接收该模拟数据?
通过您的描述来看,您需要去查阅.net文档,看.net是否有封装,才可以操作使用。

子曰 发表于 2015-10-20 15:44:00

回复 4楼Alice的帖子

我做了个demo,可以虚拟串口工具模拟。
我保存了绘图时数据的索引,可以看出索引值并不是连续的。
且数据多点就感觉有卡顿

Alice 发表于 2015-10-20 17:05:00

回复 5楼子曰的帖子

谢谢您提供的demo。
您的demo已经收到了,需要测试后给你反馈。很抱歉给您带来的不便。

子曰 发表于 2015-10-22 15:42:00

回复 6楼Alice的帖子

不好意思,之前demo发错了。
请问chart绘图除了绑定方式还有别的方式吗?

tian__xiaa 发表于 2015-10-22 16:01:00

回复 6楼Alice的帖子



这个是虚拟串口和串口发送工具的配置,demo中的串口号设置为5,数据可以为任意10位16进制字符。按照这个配置,目前demo的chart中不会绘图,因为坐标尺度不对

Alice 发表于 2015-10-22 17:28:00

回复 7楼子曰的帖子

谢谢您的反馈。
重新接收您的问题。
您的demo正在测试,由于比较复杂,需要耗费一定时间,很抱歉给您带来的不便。

Alice 发表于 2015-10-28 12:33:00

回复 8楼tian__xiaa的帖子

您好。
我们在运行您的demo的时候出现了错误,但是我们看了您的代码,并进行了分析。
您的代码主要是从硬件去数据,然后在C1chart展示出来。
我们也使用随机安装示例做了测试,测试示例路径如下:
\Documents\ComponentOne Samples\WPF\C1.WPF.Chart\CS\ChartSamples\Performance\Dynamic

通过将Dynamic.xaml.cs文件中的Interval属性改成:
Interval = TimeSpan.FromSeconds(0.01) };
来模拟您的1秒100个数据的频率。

C1Chart通过ItemsSource绑定数据源,但是实际上经过测试,在1秒内根本无法从数据源获取到100个数据,在规定的时间1秒数据源里的数据就没有100个,C1chart只是展示数据源里的数据,因为根本就没有100个数据,自然也无法在1秒展示100个数据。
调查发现,这不是产品问题,推测是计算机硬件或是平台本身的上限导致的。
页: [1] 2
查看完整版本: chart 响应串口消息,绘图时丢数据