以前作过一个程序,通过TIMER 10S发送5个命令到MSCOMM并收回数据最近看了一个外国人写的东东(VB4)是用DO读定串口数据并发送指令
DOEVENTS
更新所有的屏幕
DOEVENTS
整个循环用时约一S(现在的XP机,以前的WIN98就不知道了)
LOOP
这个程序是用于工业炉膛控制的
这两种方法到底那种更合适
后面的一个方法,整个CPU运行都是100%的谢谢 

解决方案 »

  1.   

    尽量不要用用do...loop的死循环,定时跑5ms的CPU也不会100%
      

  2.   

    现在是想不要用全部的CPU也不想实时间有问题,所以要找一个平衡点
    同时也不想更必它太多的程序,
    我想在DO  LOOP之加个sleep,会有作用吗?
      

  3.   

    循环的话CPU占用率肯定高,不过如果是短暂的等待那么影响不大(串口通信通常等待时间在10~60ms,不长)。
    如果觉得循环占用CPU资源,那么可以使用OnComm事件方式,这样就能避免循环等待的问题。在实际使用中,你发送一个命令给MSCOMM,肯定马上就等待MSCOMM返回,所以,实际使用中循环和MSCOMM效率相当
      

  4.   

    Sleep能使CPU挂起,自然CPU利用率也就不占用CPU资源了。可以用Sleep代替循环。
      

  5.   

    VB4中是否有Timer控件.
    当然是使用Timer控件来按固定间隔时间执行规定任务.
      

  6.   

    非常感谢大家的讨论.我想用SLEEP 20 来试下,但按照在空机(没有连串口)上的测试,不加SLEEP,5000次循环用6S而一旦加上 sleep 1,出会使5000次的时间去到54S编译后更到了102S因为要等停炉才以测试,效果还未出来,只在想,用十年前的机子与现在的机子相比,总不会加上这个时间就比原来慢了吧,至少会达到原来的要求?再有一个问题就是,SLEEP的响应时间是多少,如SLEEP 1~20最终的测试结果是没变的
    是否可以这样说:SLEEP本身的响应时间也要20MS?这样加了之后,CPU最多是占用了20%。再讨论下就帖了
      

  7.   

    讲下最近的测试算是结贴吧要如上所述,每5000次DO LOOP 由10S以内变成了100S以上,明显CPU是不动的但从更个窗体的温度监控来说,实时性不够了最后在循环里加了个记数变量,每200次SLEEP 20 实时性可以接受,CPU占用稍有降低
    也许就会是我最后的选择了吧谢谢各位的参与,
    分不知如何给,要没分配到的请见谅,
    再谢