嗨,我想要两个定时器对象顺序执行,一个接一个。请帮助

7次浏览(最近30天)
Mitra Bapat
Mitra Bapat 2015年3月2日
评论道: Mitra Bapat2015年3月6日
假设我的程序如下:
t =定时器;
t.StartDelay = 3;
t.TimerFcn = @(myTimerObj, thisEvent)disp(“你好”);
开始(t);
t1 =定时器;
t1。StartDelay = 5;
t1。TimerFcn = @(myTimerObj, thisEvent)disp(“世界”);
开始(t1);
我希望我的程序在3秒后显示'hello',它确实做到了。但是它在显示hello 2秒后显示world。即同时执行。
我希望'world'在'hello'显示5秒后显示。而拖延可不是我想要的答案!我需要顺序执行,因为我想把它放到一个无限循环中。
它应该在3秒后显示'hello', 5秒后显示'world'。然后再过3秒就会显示“hello”,再过5秒就会显示“world”。这在无限循环中是必需的。
请帮助
谢谢你!

接受的答案

奥列格•科马罗夫
奥列格•科马罗夫 2015年3月2日
编辑:奥列格•科马罗夫 2015年3月2日
你可以使用一个计时器和一个函数来交替状态:
抽搐
t =定时器;
t.ExecutionMode =“fixedDelay”
t.StartDelay = 3;
t.TimerFcn = @(obj,evt) alternateState(obj); / /时间节点
开始(t);
在你完成之后
停止(t)
清晰的持续的
国家交替是由以下方式完成的:
函数alternateState (t)
持续的
如果isempty ()
= true;
结束
toc
停止(t)
如果
disp (“你好”
t.StartDelay = 5;
= false;
其他的
disp (“世界”
t.StartDelay = 3;
= true;
结束
开始(t)
结束
状态在函数的范围内持续存在。
基本上,你可以在固定延迟的情况下重复执行计时器,初始延迟为3。当函数第一次触发时,它将状态初始化为'on',打印'hello',将下一个延迟设置为5。在下一次调用时,它恢复延迟并打印'world'。
注意,我不确定这是干净的,并将感谢反馈,但它的优势是支持多个状态。万博1manbetx您还可以清除用于调试的tic/toc。
3评论

登录评论。

更多的答案(0)

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!