matlab如何实现间隔几秒钟读一次数据啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab如何实现间隔几秒钟读一次数据啊相关的知识,希望对你有一定的参考价值。
就是想实现那个功能,可以先把整个excel数据存到一个变量中(n行一列得矩阵),然后每隔几秒钟从变量中读出一个数据,如何实现啊?多谢!
pause可以实现间隔几秒钟,读数据可以用fscanf。以下分别介绍两个函数。pause(n)表示延迟n秒再运行下一条语句,其中n必须是正数。因此延迟5秒的命令是pause(5)。
官方解释:pause(n) pauses executionfor n seconds before continuing, where n isany nonnegative real number. Pausing must be enabled for this to takeeffect.
A = fscanf(fileID,formatSpec)其中fileID为文件ID号,formatSpec为读取格式
举例:
%写入一个文件
x = 100*rand(8,1);
fileID = fopen('nums1.txt','w');
fprintf(fileID,'%4.4f\n',x);
fclose(fileID);
%打开读取文件
fileID = fopen('nums1.txt','r');
formatSpec = '%f';
A = fscanf(fileID,formatSpec)
fclose(fileID); 参考技术A pause(1)暂停一秒钟,然后进行下面的程序.本回答被提问者采纳
几秒钟后如何停止计时器
【中文标题】几秒钟后如何停止计时器【英文标题】:How to stop Timer after few seconds 【发布时间】:2018-01-28 11:46:36 【问题描述】:这里在myAPICall()
方法中调用另一个方法,即COStatusAPI()
,每 5 秒最多 90 秒。
这里的COStatusAPI()
是一个API 调用。即,我每 5 秒访问一次服务器。作为回应,我会得到 COStatus 为 1 或 0。
如果我得到 COStatus 为 1,我将停止计时器并导航到另一个 viewController 和 如果我将 COStatus 设为 0 90 秒。我正在停止计时器并显示警报。
但这里我的问题是计时器没有停止。比如,如果我得到 COStatus 为 1,则后台计时器正在运行。因此,在 90 秒后收到警报消息。
以同样的方式直到 90 秒。如果我得到 COStatus as 0 表示正在显示警报。此警报会不断重复。
如何做到这一点?谁能帮我解决这个问题
var myTimer : Timer?
var timeController : Bool = true
func myAPICall()
self.loadingview()
if self.myTimer == nil
self.myTimer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(self.COStatusAPI), userInfo: nil, repeats: self.timeController)
@objc func COStatusAPI()
if COStatus == 0
self.timeController = true
let when = DispatchTime.now() + 90
DispatchQueue.main.asyncAfter(deadline: when)
self.timeController = false
if self.acceptOrRejectTimer != nil
self.acceptOrRejectTimer!.invalidate()
self.acceptOrRejectTimer = nil
self.hideloadingView()
//showing alert
if COStatus == 1
self.timeController = false
if self.acceptOrRejectTimer != nil
self.acceptOrRejectTimer!.invalidate()
self.acceptOrRejectTimer = nil
self.hideloadingview()
//navigating to next view controller
【问题讨论】:
如果您使用 pod,那么 AsyncTimer 可能会对您有所帮助 谢谢@AdrianBobrowski。 vadian 的代码就像魅力一样。现在不需要使用dispatchqueue、异步定时器等等 【参考方案1】: 忘记DispatchQueue.main.asyncAfter
。
创建一个值为 18 的 Int
计数器属性。
在 COStatusAPI()
中进行 API 调用。
如果COStatus == 1
invalidate()
计时器并转到下一个控制器。
其他
递减计数器。
如果计数器达到 0 invalidate()
计时器并显示警报。
var myTimer : Timer?
var counter = 0
func myAPICall()
self.loadingview()
if self.myTimer == nil
counter = 18
self.myTimer = Timer.scheduledTimer(timeInterval: 5.0,
target: self,
selector: #selector(COStatusAPI),
userInfo: nil,
repeats: true)
@objc func COStatusAPI(_ timer: Timer)
// call API
switch COStatus
case 0:
counter -= 1
if counter == 0
timer.invalidate()
self.myTimer = nil
//showing alert
case 1:
timer.invalidate()
self.myTimer = nil
//navigating to next view controller
default: break
【讨论】:
感谢您的快速响应。如果你不是我的,你能提供代码吗?仍然无法获得输出 这里的 counter = 18 是什么? 18 表示 18 秒吗? 我必须在 90 秒后停止计时器并且我们必须显示警报?我们是否需要在这里提到计时器应该运行 90 秒? 定时器每 5 秒触发一次,18 * 5 = 90以上是关于matlab如何实现间隔几秒钟读一次数据啊的主要内容,如果未能解决你的问题,请参考以下文章
几秒钟后停用 UILongPressGestureRecognizer? [关闭]