VB.Net-如何每1000微秒使用嵌套if in计时器?

VB.Net-如何每1000微秒使用嵌套if in计时器?,vb.net,timer,nested-if,Vb.net,Timer,Nested If,我想执行coatall.text以递增,但如果在计时器中每隔1000微秒/1秒滴答一次不起作用,则执行嵌套。请帮帮我, 这是我的密码 我这样做是因为我的传感器在一段时间内读取的值是小于900的值的两倍、三倍或更多,也就是说,如果我只使用“1-if条件”,它会计数两倍、三倍或更多。所以我的逻辑(noob)是如果我的传感器读数小于900,然后如果我的传感器读数大于899,则执行'coutall.Text=coutall.Text+1'代码以计数1,依此类推 Private Sub Timer3_Ti

我想执行coatall.text以递增,但如果在计时器中每隔1000微秒/1秒滴答一次不起作用,则执行嵌套。请帮帮我, 这是我的密码

我这样做是因为我的传感器在一段时间内读取的值是小于900的值的两倍、三倍或更多,也就是说,如果我只使用“1-if条件”,它会计数两倍、三倍或更多。所以我的逻辑(noob)是如果我的传感器读数小于900,然后如果我的传感器读数大于899,则执行'coutall.Text=coutall.Text+1'代码以计数1,依此类推

Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
    Try
        Dim i As Single = SerialPort1.ReadExisting 'get data of my sensor
        label1.Text = i.ToString                   'display on label1.text
        If label1.Text < 900 Then
            'messageBox.show("working here")
            'I really make it comment lines don't mind it.
            If label1.Text > 899 Then   'not working when my i is <  to 900
                coutall.Text = coutall.Text + 1
            End If
        Else
            'nothing
        End If
    Catch ex As Exception

    End Try
End Sub
Private Sub Timer3\u Tick(发送方作为对象,e作为事件参数)处理Timer3。Tick
尝试
Dim i As Single=SerialPort1.ReadExisting'获取传感器的数据
label1.Text=i.ToString'显示在label1.Text上
如果label1.Text<900,则
'messageBox.show(“在这里工作”)
我真的很喜欢评论行,不介意。
如果label1.Text>899,则“当我的i<至900时不工作”
coutall.Text=coutall.Text+1
如果结束
其他的
”“没有
如果结束
特例
结束尝试
端接头

如果我的解释不清楚,请告诉我,我的英语不好,对不起。:)

以下是答案,仅供将来选择(如果)

Private Sub Timer3\u Tick(发送方作为对象,e作为事件参数)处理Timer3。Tick
尝试
Dim i作为单个=SerialPort1.ReadExisting
label1.Text=i.ToString
如果label1.Text<900,则
Timer1.Enabled=True'而不是使用嵌套在此处再次创建计时器
如果结束
特例
结束尝试
端接头
私有子Timer1_Tick(发送方作为对象,e作为事件参数)处理Timer1。Tick“new timer”
如果label1.Text>899,则“看起来像嵌套的”
coutall.Text=coutall.Text+1'执行计数+1
Timer1.Enabled=False'然后关闭计时器1
如果结束
端接头

永远不会到达递增行。当数据小于900时,第一个
If
将为真,但这意味着第二个
If
将永远不会为真。所以你永远不会到达递增线。除此之外,还不清楚你打算用这段代码做什么。啊哈!我明白你的意思,谢谢!那么除了嵌套if,我使用什么方法呢?while循环,for循环还是什么?呵呵,对不起,我是新手。另外,不要使用UI控件(比如标签)而不是变量-UI控件会慢得多。因此,如果我<900等等,它应该是
。另一件事:如果你使用它,将确保变量类型正确匹配,并且不会因为它必须猜测的类型转换而减慢速度。谢谢安德鲁爵士,在这里如何推荐?hehe@MarkL为什么我不能成为899.9?当然小于900,但也大于899。我们这里不是在处理整数。我被声明为单身。您仍然有一个空捕获,因此您的代码只接受错误并继续处理未发现的错误。您仍然没有启用选项Strict,这会使您的代码容易受到应该在编译时发现的运行时错误的影响。
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
    Try
        Dim i As Single = SerialPort1.ReadExisting
        label1.Text = i.ToString
        If label1.Text < 900 Then
            Timer1.Enabled = True 'instead using nested here create timer again
        End If
    Catch ex As Exception

    End Try
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 'new timer
    If label1.Text > 899 Then 'looks like nested
        coutall.Text = coutall.Text + 1 'execute count + 1
        Timer1.Enabled = False 'then shutdown timer 1
    End If
End Sub