我编了一个程序,自己定义了一个Ttime_thread类(from:Tthread)
我想实现自动数据采集和手动数据采集,手动的优先级高于自动的,
我的设计思路如下:
在主程序中,点击‘启动’——>自动采集(timer1每定时一秒,去输入缓冲区取一次数据)。主程序中还有动画在运行。然后点击‘手动采集’——>挂起‘自动’——>输出命令——>等待接收发送成功的消息——>等待接收数据——>“手动”挂起——>‘自动’启用。
我不知道该怎么实现!
请大虾帮忙,不胜感激!!!

解决方案 »

  1.   

    呵呵,什么呀,你直接用线程去采集,不用TIMER控件,然后就可以用线程来实现了,何必加TIMER?用线程实时性好,你如果用TIMER,可以不用线程了,只要让TIMER.Enable:=true or False就行了!
      

  2.   

    1 为什么要用两个线程?感觉你的手动和自动功能差不多,而且不可能同时进行的阿
    2 你可以用互斥体来实现event, segment等等来实现同步阿
      

  3.   

    是呀,我觉得你这个称不上个线程问题
    用timer的话,直接判断状态,然后分别执行就行了
    改变状态岂不是很简单?
      

  4.   

    我的思路是如下:
    将采集的部分,单独做成个模块,至于,模块是用线程,还是什么实现,不在这里讨论,原理一样;
    该模块可接收控制(消息,信号量..),接到控制,就采集一次;注意要处理上次通信未结束,就收到新的控制的情况;
    然后,用个timer控件做定时控制,在button中也同样做手动控制,两边代码应该是一样,或差不多的
      

  5.   


    可以设三种线程,基线程定义公用的方法和变量,再有一个定时线程一个手动线程,定时线程执行时检测时间到了并且手动没有干预,则执行定时流程,手动线程在手动控制确定后开启,线程执行时先KIll或暂停定时线程。