• 3739阅读
  • 5回复

[讨论]6410板子QT画图 [复制链接]

上一主题 下一主题
离线1138455004
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-08
我开了个定时器,定时40或80等在一个IO输出脉冲,确实按这个定时间隔输出脉冲,但是当加入update代码,paintevent造成定时间隔拉长到200ms,特意试过,paintevent中无论画图耗时30ms还是干脆屏蔽全部代码只是个空函数,都造成定时间隔变长到200ms,且此时鼠标响应迟钝。另外有做了个按钮,进入后是while死循环翻转io,不加update 和QCoreApplication::processEvents()时io翻转很快,但是加了这两句,200ms才翻一次,如果不加QCoreApplication::processEvents(),界面鼠标不再响应。如何做到在定时器控制下的间隔刷屏更新绘图区?
离线never_forget

只看该作者 1楼 发表于: 2016-05-08
QTest qwait() 函数吧,效果应该还是可以实现得
离线1138455004

只看该作者 2楼 发表于: 2016-05-08
图片说明下帖描述
离线1138455004

只看该作者 3楼 发表于: 2016-05-08
上面右上是正常显示的图片,所有控件都显示出来,但是它240ms更新一次,左边是用示波器测量ARM板上一个IO,40ms时基,可以看出重复周期站6格,鼠标卡顿。但是我时基定时器定时间隔80ms。下图我把paintevent最后加了一句setUpdatesEnabled(FALSE);显示是白屏,但是点击中下方combobox后,图片显示了,控件是没显示的,此时下左显示IO观察的重复周期是80ms。鼠标流畅。在240ms中,我的刷屏只需要      40ms,其他时候不知系统在干什么,一串脉冲变为低后代表代码在paintevent已经结束。在setUpdatesEnabled(FALSE)语句加上,所有控件不显示,并且白屏,只要combobox点中,才以80ms定时间隔输出脉冲串以及更新。
离线1138455004

只看该作者 4楼 发表于: 2016-05-08
while (1)
    {
        WritePLL(1234);        //包含有IO代码
        MyProcess();            //处理画图数据,画图实在paintevent中实现
        BusProcess();
        CSFPGAL();                //IO代码
        CSFPGALH);
        update();
        QCoreApplication::processEvents();
    }
也试过上面这样死循环代码,如果不加update();和QCoreApplication::processEvents();
无法刷新,出现白屏,鼠标也不动。但是死循环中IO翻转代码执行频率很快,加上后正常显示,但是刷屏周期同样长达240ms,
这说明与所用定时器没关系,系统执行完刷屏后也没回到我死循环中。而是不知道在哪晃荡,连鼠标都不流畅。
离线caicaiking

只看该作者 5楼 发表于: 2016-05-10
这样的绘图可能会拖累处理器的处理时间,建议你是用第三方控件绘图试一下,这样可能会改善你的绘图速度,从而让软件流畅运行。
快速回复
限100 字节
 
上一个 下一个