From 78a11ca88f786704596a9f49396dab6a1cf51aee Mon Sep 17 00:00:00 2001 From: Alex Warm Date: Thu, 15 Aug 2019 11:57:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=80=D0=B0=D0=B1=D0=B0=D1=82?= =?UTF-8?q?=D1=8B=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B0=D0=B9=D0=BC?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=20=D0=BF=D1=80=D0=B8=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B5=20=D0=B1=D1=80=D0=B0=D0=BA=D0=B8=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0=20=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=201908151156?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- braker.tc | 25 ++++++++++++++----------- braker.th | 1 + global.th | 3 ++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/braker.tc b/braker.tc index c508fbb..6bc7104 100644 --- a/braker.tc +++ b/braker.tc @@ -95,8 +95,7 @@ void braker_set(string cmd){ } else{ if (type == "G"){ - relay_set(brakers[num].config->Relay,true); - brakers[num].State = true; + braker_change_state(num-1,true); d("Бракиратор #"+str(num)+" включен по сигналу сервера"); }else{ d("Бракиратор #"+str(num)+" получил сигнал 'B'. Игнорируем."); @@ -114,24 +113,18 @@ void braker_proc(unsigned char number) unsigned long timeout = brakers[num].config->Timeout; if (brakers[num].State){ // проверка на выключение if (brakers[num].OnTime + timeout < sys.timercountms){ // Обработка таймаута - relay_set(brakers[num].config->Relay,false); - brakers[num].State = false; + braker_change_state(num,false); d("Бракиратор #"+str(number)+" выключен по таймауту ["+str(sys.timercountms - brakers[num].OnTime)+"/"+str(timeout)+"]ms"); - brakers[num].OnTime = 0; }else{ // проверка статуса порта if (brakers[num].config->DropPort>0 && getPinState(brakers[num].config->DropPort)){ - relay_set(brakers[num].config->Relay,false); - brakers[num].State = false; + braker_change_state(num,false); d("Бракиратор #"+str(number)+" выключен по сигналу сброса через "+str(sys.timercountms - brakers[num].OnTime)+"ms"); - brakers[num].OnTime = 0; } } }else{ // проверка на сработку if (brakers[num].config->Mode==0 && pinChange(brakers[num].config->SensPort) && getPinStateS(brakers[num].config->SensPort,true)){ if (braker_get_current(num) == "B"){ - relay_set(brakers[num].config->Relay,true); - brakers[num].State = true; - brakers[num].OnTime = sys.timercountms; + braker_change_state(num,true); d("Бракиратор #"+str(number)+" включен по сигналу сенсора"); } } @@ -140,6 +133,16 @@ void braker_proc(unsigned char number) } } +void braker_change_state(unsigned char num, bool state){ + relay_set(brakers[num].config->Relay,state); + brakers[num].State = state; + if (state){ + brakers[num].OnTime = sys.timercountms; + }else{ + brakers[num].OnTime = 0; + } +} + string braker_get_current(unsigned char num){ string c = left(brakers[num].Fifo,1); int l = len(brakers[num].Fifo); diff --git a/braker.th b/braker.th index 2da17e9..a76261e 100644 --- a/braker.th +++ b/braker.th @@ -10,4 +10,5 @@ void braker_proc(unsigned char number); string braker_get_current(unsigned char num); void braker_add_port(char port); bool isBrakerPort(int port); +void braker_change_state(unsigned char num, bool state); #endif \ No newline at end of file diff --git a/global.th b/global.th index a33a99c..49f0077 100644 --- a/global.th +++ b/global.th @@ -9,7 +9,7 @@ #message "link global not defined" #endif -#define VERSION "2.0b_1908141216" +#define VERSION "2.0b_1908151156" #define MAX_FIFO_SIZE 20 #define BRAKER_COUNT 3 @@ -132,5 +132,6 @@ extern BrakerProcess brakers[BRAKER_COUNT]; +