使用任务做外部事件,避免外部业务执行过长,影响触摸开关的继电器动作
This commit is contained in:
parent
eafd830018
commit
39e3b045d3
|
@ -55,6 +55,11 @@ void Button_GrayLevel::Set(Pin key, Pin relay, bool relayInvert)
|
||||||
Key.UsePress();
|
Key.UsePress();
|
||||||
Key.Open();
|
Key.Open();
|
||||||
|
|
||||||
|
//面板事件
|
||||||
|
if (!_task3)
|
||||||
|
{
|
||||||
|
_task3 = Sys.AddTask(&Button_GrayLevel::ReportPress, this, -1, -1, "面板事件");
|
||||||
|
}
|
||||||
if (relay != P0) Relay.Init(relay, relayInvert).Open();
|
if (relay != P0) Relay.Init(relay, relayInvert).Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,10 +152,18 @@ void Button_GrayLevel::OnPress(InputPort& port, bool down)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (_Handler) _Handler(this, _Param);
|
// if (_Handler) _Handler(this, _Param);
|
||||||
|
if (_task3)
|
||||||
|
Sys.SetTask(_task3, true, 0);
|
||||||
|
else
|
||||||
Press(*this);
|
Press(*this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Button_GrayLevel::ReportPress()
|
||||||
|
{
|
||||||
|
Press(*this);
|
||||||
|
}
|
||||||
|
|
||||||
void Close2Task(void * param)
|
void Close2Task(void * param)
|
||||||
{
|
{
|
||||||
auto bt = (Button_GrayLevel *)param;
|
auto bt = (Button_GrayLevel *)param;
|
||||||
|
|
|
@ -81,6 +81,11 @@ public:
|
||||||
void DelayClose2(int ms); // 自定义延时关闭
|
void DelayClose2(int ms); // 自定义延时关闭
|
||||||
int delaytime = 0;
|
int delaytime = 0;
|
||||||
uint _task2 = 0;
|
uint _task2 = 0;
|
||||||
|
|
||||||
|
//上报状态变化
|
||||||
|
uint _task3 = 0;
|
||||||
|
|
||||||
|
void ReportPress();
|
||||||
// 过零检测
|
// 过零检测
|
||||||
private:
|
private:
|
||||||
static int ACZeroAdjTime; // 过零检测时间补偿 默认 2300us
|
static int ACZeroAdjTime; // 过零检测时间补偿 默认 2300us
|
||||||
|
|
Loading…
Reference in New Issue