我很抱歉提前標題可能非常混亂,但我不確定由於我的英文問題該如何解釋。接受一段時間內改變的值保持改變
我有一個使用VS2008編寫的C#表單應用程序,它不斷從外部設備讀取數據。讀取的數據爲0(OFF)或1(ON)。大多數情況下,它保持爲0,但是當系統中發生某些事情時,它變爲1並保持1 5秒鐘並返回到0.
我的程序需要做的是始終觀察值從0變化爲1,並計數捕獲事件的次數1.
問題是,有時外部設備有一個錯誤,並將事故中的值從0更改爲1秒或更少。
我的程序需要忽略和不計數的發生如果將值從0變化到1持續小於1秒,和接受並計數出現如果從0到1的值的變化在5秒的生命中持續2秒。
我在想,基本上我只能增加計數只有當它保持1超過2秒,否則什麼也不做。 我試圖使用Thread.Sleep(2000)
,但它不起作用,我不認爲這是正確的方式,但我還沒有找到解決方案來實現這一點。
private int data; //will contain the data read from the ext. device
private int occurrence = 0;
//Tick runs every 100 seconds
private void MyTick(object sender, EventArgs e)
{
//if data becomes 1
if(data == 1)
{
Thread.Sleep(2000); //wait 2 seconds??? does not work
//if the data stays 1 for 2 seconds, it is a valid value
if(?????)
{
occurrence++; //count up the occurrence
}
}
}
有人可以請給我一些建議,我可以做些什麼來實現這一目標嗎?
您可能正在尋找'StopWatch'來精確測量已用時間。 – Equalsk