在具有多个 if 条件的循环中更改布尔值
Change a boolean inside a loop with multiple if conditions
我有 4 个 if
条件与一个名为 ValveActive
的变量(从 1 变为 4)相关,在一个每秒执行的程序循环中。
每个 if
条件为真 5 分钟。在每个 if
条件中,我需要将布尔值 PortSet
设置为 true
一段定义的时间,然后将其设置为 false
。我希望打开布尔值的过程在循环重复时不重复。布尔值表示打开继电器然后将其关闭,我希望在每个唯一 ValveActive
状态期间只发生一次。
Start of loop
If ValveActive=1
PortSet(9,1) 'Activate port
'Do something
Delay (1,25,mSec)
PortSet(9,0) 'Deactivate port
ElseIf ValveActive=2
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
ElseIf ValveActive=3
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
Else
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
Loop
我已经尝试将循环外的布尔值设置为 false,然后在循环内将其变为 true,但这不适用于多个 if 条件。我怎样才能做到这一点?
创建一个新变量,比如PreviousValveActive
,它通过循环记住上次ValveActive
的值。然后使用 PreviousValveActive
作为测试来确定是否执行在每个状态下应该只发生一次的事情。
Start of loop
If ValveActive=1
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1) 'Activate port
'Do something
Delay (1,25,mSec)
PortSet(9,0) 'Deactivate port
EndIf
ElseIf ValveActive=2
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
ElseIf ValveActive=3
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
Else
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
EndIf
Loop
我有 4 个 if
条件与一个名为 ValveActive
的变量(从 1 变为 4)相关,在一个每秒执行的程序循环中。
每个 if
条件为真 5 分钟。在每个 if
条件中,我需要将布尔值 PortSet
设置为 true
一段定义的时间,然后将其设置为 false
。我希望打开布尔值的过程在循环重复时不重复。布尔值表示打开继电器然后将其关闭,我希望在每个唯一 ValveActive
状态期间只发生一次。
Start of loop
If ValveActive=1
PortSet(9,1) 'Activate port
'Do something
Delay (1,25,mSec)
PortSet(9,0) 'Deactivate port
ElseIf ValveActive=2
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
ElseIf ValveActive=3
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
Else
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
Loop
我已经尝试将循环外的布尔值设置为 false,然后在循环内将其变为 true,但这不适用于多个 if 条件。我怎样才能做到这一点?
创建一个新变量,比如PreviousValveActive
,它通过循环记住上次ValveActive
的值。然后使用 PreviousValveActive
作为测试来确定是否执行在每个状态下应该只发生一次的事情。
Start of loop
If ValveActive=1
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1) 'Activate port
'Do something
Delay (1,25,mSec)
PortSet(9,0) 'Deactivate port
EndIf
ElseIf ValveActive=2
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
ElseIf ValveActive=3
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
Else
If PreviousValveActive != ValveActive
PreviousValveActive = ValveActive
PortSet(9,1)
'Do something
Delay (1,25,mSec)
PortSet(9,0)
EndIf
EndIf
Loop