【发布时间】:2013-08-05 09:11:13
【问题描述】:
我正在开发一个 WPF 应用程序,它将读取串行端口上的数据,对其进行解析并将其显示在 UI 上。
我必须使用串口 Buad rate - 115200,数据位 - 8,停止位 - 1。
我在串行端口上每秒发送 10000 个字节,这将由我的 WPF 应用程序读取。
但是,我在这里遇到了 UI 问题。当我开始读取 COM 端口时,我的 UI 冻结了。它不允许任何人做任何事情。根据我的调查,这是由于数据的高速。
- 我正在不同线程上读取 com 端口,而 UI 正在不同线程上运行。
- 线程之间的数据传输是使用公共循环缓冲区完成的。
- 我确实使用 BeginInvoke 方法来更新 UI 字段,以便函数立即返回。
- 在两个线程中访问循环缓冲区时,我确实使用了锁定机制。
有没有办法处理这种情况?我读过很多人面临同样的问题。解决此类问题的方法是什么。
谢谢, 维沙尔 N
【问题讨论】:
-
请出示一些代码。
-
你确定你在不同的线程上吗?您的端口读取完成了吗?请发布一些代码。
-
第 3 步是问题所在,您这样做太频繁了。 UI 跟不上。只是少做很多,你只需要让人们的眼睛忙碌。他们看不到任何更新速度超过每秒 20 次的东西。缓冲接收到的数据,直到获得完整的响应。并尽量减少您在 UI 上转储的信息量。
标签: wpf serial-port