我设置了多个定时器,怎么判别优先级?
:) :)结果相当乱,执行顺序都乱了。
另外,延时知道了,哈哈Delay(1.0);//延时1秒 :D :D :D
十分感谢cpubbs。
[ 本帖最后由 brk1985 于 2008-5-28 13:42 编辑 ] http://www.cpubbs.com/bbs/thread-56183-1-1.html
兄弟看看这个,您是开了又关了!这样不行呢! 其实我最想知道的是:
我设置了多个定时器,怎么判别优先级?是不是需要判别优先级?
另外,延时怎么做?sleep函数?
labwindows/cvi如何使用sleep函数? 老兄试试delay()这个函数来延时,sleep我再看一下!! 好像以前看过SLEEP函数,现在好像找不着了! int SuspendTimerCallbacks (void);
这个能将其他定时器暂停,如果是高优先级的,可以用它暂停其他!不过不太清楚老兄的具体需求,说说您的需求,再想办法! SuspendTimerCallbacks 停止所有,ResumeTimerCallbacks重启所有。
我在StartCallback函数(按钮Start的回调函数)中
int CVICALLBACK StartCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
ResumeTimerCallbacks();//启动所有定时器
SetCtrlAttribute (panelHandle, PANEL_Timer1, ATTR_ENABLED, 1);
SetCtrlAttribute (panelHandle, PANEL_Timer2, ATTR_ENABLED, 1);
SetCtrlAttribute (panelHandle, PANEL_Timer3, ATTR_ENABLED, 1);
//Timer3执行完成后SuspendTimerCallbacks
break;
}
return 0;
}
希望按顺序,点击Start按钮,先执行Timer1,再执行Timer2,再执行Timer3,结果不行。存在竞争,有时候Timer2还没执行,就执行Timer3。特别是再次点击Start按钮、启动所有定时器(ResumeTimerCallbacks)时,执行顺序更乱。 原帖由 cpubbs 于 2008-5-28 12:22 发表 http://www.cpubbs.com/bbs/images/common/back.gif
int SuspendTimerCallbacks (void);
这个能将其他定时器暂停,如果是高优先级的,可以用它暂停其他!不过不太清楚老兄的具体需求,说说您的需求,再想办法!
labwindows/cvi可以设置优先级?怎么设置呢?另外,SuspendTimerCallbacks停止所有定时器。 定时器的优先级是不是已经封装好的呢?但是不知道其优先级到底是多少 楼主大约是写汇编或嵌入式开发太久了!
定时器的优先级只针对操作系统而言。一种语言中的所有定时器的优先级都一样,没有优先级高低的说法! 定时器的线程优先级比较低,容易受其他线程的干扰
页:
[1]