又来麻烦大家了,现在遇到一个要提高效率的问题,请大家帮出出主意!

admireO 2001-08-23 11:41:48
大家好,昨天调程序遇到一个要提高效率的问题,晚上想了一晚上也没得出什么好的办法,请大家帮帮忙,问题是这样:我用一个工作线程从串口取出数据.然后向主窗口发消息(每接收一组数据,发一次消息,为了实时性,暂时只能这样:) ).由于串口每次只能发三个子节(一组数据)而数据有好几万个,所以会造成频繁的向主窗口发消息,这样就造成了界面刷新处理不过来,感觉数据不是连续的在界面上显示,而是突然来很多.也就是屏幕有时候半天没反应.
还说明一点,由于我的从串口采过来的数据是属于不同的通道,所以在不同的子窗体里显示.子窗体间的刷新好像也不同步.希望大家给出意见.
...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
宏鑫晶科 2001-08-24
  • 打赏
  • 举报
回复
关注
vcsongs 2001-08-24
  • 打赏
  • 举报
回复
1) 速度匹配很重要, 放一些缓冲区.
2) 不要用数据驱动模式. 改为时间驱动模式.
billbord 2001-08-24
  • 打赏
  • 举报
回复
改用界面线程,这是最好的方案。
我遇到过同样问题,已经成功。
good luck
admireO 2001-08-24
  • 打赏
  • 举报
回复
加分了,最后的方案说明时间驱动比数据驱动好多了.
admireO 2001-08-23
  • 打赏
  • 举报
回复
但是定时器能不能得到处理呢?他的优先级比较低
clack 2001-08-23
  • 打赏
  • 举报
回复
我觉得你直接在县城里更新窗口就行,只要得到各窗口的this指针,再分别处理
windindance 2001-08-23
  • 打赏
  • 举报
回复
你可以用定时器,每50ms刷新一次。
zj_ok 2001-08-23
  • 打赏
  • 举报
回复
gz
admireO 2001-08-23
  • 打赏
  • 举报
回复
请大家关注
Arthur_Ma 2001-08-23
  • 打赏
  • 举报
回复
一個線程從串口讀數據到指定的buffer,
用一個或多個的線程從buffer讀數據在對應的窗體顯示數據
admireO 2001-08-23
  • 打赏
  • 举报
回复
我用了4个,四个通道的数据,显示在不同的子窗体上,串口的消息其实很多的,因为每接收3个子节,就要向主窗体发送一个自定义的接收到数据的消息,请求主窗体进行处理.我还是决定用定时器每10毫秒刷新一次了
Mercedes 2001-08-23
  • 打赏
  • 举报
回复
主线程是不是有许多其它的消息呢?光串口的消息应该不会处理得这么慢吧。
如果对处理速度要求不高的话,在子线程发出一个消息后,可以Sleep几十毫秒试一试。
你用了多个子窗体,不能只用一个吗?问题可能就出在这里。
蒋晟 2001-08-23
  • 打赏
  • 举报
回复
存到数据库,主窗口在OnTimer里面查数据库。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧