2014-09-29 68 views
0

我在VB.Net中编写了一段代码,当传感器改变它的状态时它将发送一个触发器来开启IP摄像机(即0到1或1到0)。在VB.NET中的一段时间内跳过代码部分

我已经这样做了,但是我希望当传感器被触发时,IP摄像机会触发,然后等待30秒,然后再次触发,同时传感器仍然正常触发。我的目标是防止IP摄像机的快速触发。

所有这些都是在后台工作人员完成的。在做了一些研究之后,我发现我可以让背景工作者停下来30秒,但这并不是我想要的,因为传感器也会停下来。出于同样的原因,我也不想在那里延迟时间。

我想知道是否可以在后台工作人员中“跳过”一段代码一段时间?例如:

If SensorHasChangedStatus() = True Then 

     'execute this bit of code once then skip over it for 30 seconds 
     triggerCamera() 
     'end of code to skip over 

     'do other stuff 

    End If 

谢谢, 克里斯

回答

1

你有没有看着计时器?

http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx

您可以创建一个间隔定时器,写自己的事件处理程序达到该区间,每次触发。

所以你可以触发你的相机,设置一个条件跳过任何进一步的电话,然后启动一个定时器,在30s后逆转状态,允许再次触发相机。

下面是一个基本的例子,每3秒触发一次,然后写入控制台。

Sub Main() 

    'Create a timer with interval of 3s 
    Dim timer As New Timer(3000) 

    'Set handler to trigger each interval 
    AddHandler timer.Elapsed, New ElapsedEventHandler(AddressOf elapseHandler) 

    'Start timer 
    timer.Enabled = True 

    'Demo loop 
    While timer.Enabled 
    End While 

End Sub 

'Handler 
Public Sub elapseHandler(ByVal sender As Object, ByVal e As ElapsedEventArgs) 
    Console.WriteLine("3s Passed") 
    'Do stuff here every interval 
End Sub 
+0

谢谢你的回答。它运作得非常好! – FunkasaurusRex 2014-10-01 05:01:06