线程问题,很简单的……

shgye121212 2003-07-01 04:35:17
我编了一个程序,自己定义了一个Ttime_thread类(from:Tthread)
我想实现自动数据采集和手动数据采集,手动的优先级高于自动的,
我的设计思路如下:
在主程序中,点击‘启动’——>自动采集(timer1每定时一秒,去输入缓冲区取一次数据)。主程序中还有动画在运行。然后点击‘手动采集’——>挂起‘自动’——>输出命令——>等待接收发送成功的消息——>等待接收数据——>“手动”挂起——>‘自动’启用。
我不知道该怎么实现!
请大虾帮忙,不胜感激!!!
...全文
37 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
seachange 2003-07-01
  • 打赏
  • 举报
回复

可以设三种线程,基线程定义公用的方法和变量,再有一个定时线程一个手动线程,定时线程执行时检测时间到了并且手动没有干预,则执行定时流程,手动线程在手动控制确定后开启,线程执行时先KIll或暂停定时线程。
aiirii 2003-07-01
  • 打赏
  • 举报
回复
我的思路是如下:
将采集的部分,单独做成个模块,至于,模块是用线程,还是什么实现,不在这里讨论,原理一样;
该模块可接收控制(消息,信号量..),接到控制,就采集一次;注意要处理上次通信未结束,就收到新的控制的情况;
然后,用个timer控件做定时控制,在button中也同样做手动控制,两边代码应该是一样,或差不多的
myling 2003-07-01
  • 打赏
  • 举报
回复
是呀,我觉得你这个称不上个线程问题


用timer的话,直接判断状态,然后分别执行就行了


改变状态岂不是很简单?

firetoucher 2003-07-01
  • 打赏
  • 举报
回复
1 为什么要用两个线程?感觉你的手动和自动功能差不多,而且不可能同时进行的阿
2 你可以用互斥体来实现event, segment等等来实现同步阿
上海老李 2003-07-01
  • 打赏
  • 举报
回复
呵呵,什么呀,你直接用线程去采集,不用TIMER控件,然后就可以用线程来实现了,何必加TIMER?用线程实时性好,你如果用TIMER,可以不用线程了,只要让TIMER.Enable:=true or False就行了!
wisenowa 2003-07-01
  • 打赏
  • 举报
回复
呵呵,你的问题太笼统了吧?

单看你的工作流程很简单呀。

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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