From f271646d8668b56d17bdefb8c80ca925f840bd16 Mon Sep 17 00:00:00 2001 From: dimoniche Date: Thu, 4 Jul 2019 00:05:41 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=87=D0=B5=D1=80=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PROJECT/app/app_serv.c | 104 ++++++++++++++++++++++++-------------- PROJECT/menu/menu.h | 10 ++-- PROJECT/services/coin.c | 14 ++--- settings/sk-mlpc2368.dni | 6 +-- settings/sk-mlpc2368.wsdt | 8 +-- 5 files changed, 85 insertions(+), 57 deletions(-) diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c index 1a8a6d0..c78f51a 100644 --- a/PROJECT/app/app_serv.c +++ b/PROJECT/app/app_serv.c @@ -172,48 +172,35 @@ void UserAppTask(void *p_arg) { break; } - - // если есть ошибки, не работаем - if (TstCriticalErrors()) - { - UserPrintErrorMenu(); - RefreshMenu(); - - // выключим прием денег - if (was_critical_error == 0) - { - CoinDisable(); - was_critical_error = 1; - } - break; - } - // включим заново прием денег, если была ошибка - if (was_critical_error) - { - was_critical_error = 0; - break; - } - for(int post = 0; post < COUNT_POST + COUNT_VACUUM; post++) { accmoney = GetAcceptedMoney(post); if (accmoney > 0) { + // есть принятые деньги drawPostInfo[post] = 1; - // печать по внешнему сигналу, ждем таймаут отмены - GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX); - if(print_timeout) + if(wash_State[post] != washing) { - // если указан таймаут обнуления денег - просто их обнуляем - if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout) + // печать по внешнему сигналу, ждем таймаут отмены, но не в режиме мойки + GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX); + if(print_timeout) { - SetAcceptedMoney(0, post); - wash_State[post] = waitMoney; + // если указан таймаут обнуления денег - просто их обнуляем + if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout) + { + SetAcceptedMoney(0, post); + wash_State[post] = waitMoney; + } } } + else + { + // в режиме мойки продлеваем ожидание + money_timestamp[post] = OSTimeGet(); + } } else { @@ -232,6 +219,27 @@ void UserAppTask(void *p_arg) // принимаем деньги DrawMenu(); + // если есть ошибки, не работаем + if (TstCriticalErrors()) + { + UserPrintErrorMenu(); + RefreshMenu(); + + // выключим прием денег + if (was_critical_error == 0) + { + was_critical_error = 1; + } + break; + } + + // включим заново прием денег, если была ошибка + if (was_critical_error) + { + was_critical_error = 0; + break; + } + break; case EVENT_MODE_CHANGE: @@ -365,7 +373,12 @@ void UserAppTask(void *p_arg) if (GetMode() == MODE_WORK) // { int number_post = event - EVENT_STOP_MONEY_POST1; - wash_State[number_post] = washing; + + accmoney = GetAcceptedMoney(number_post); + if (accmoney > 0) + { + wash_State[number_post] = washing; + } } break; @@ -382,9 +395,18 @@ void UserAppTask(void *p_arg) int number_post = event - EVENT_WAIT_CASH_PRINT_CHECK_POST1; int count_delay = 0; - // запустим задержку печати чека - GetData(&PrintTimeoutDesc, &count_delay, number_post, DATA_FLAG_DIRECT_INDEX); - countSecWait[number_post] = count_delay; + accmoney = GetAcceptedMoney(number_post); + if (accmoney > 0) + { + // запустим задержку печати чека + GetData(&PrintTimeoutDesc, &count_delay, number_post, DATA_FLAG_DIRECT_INDEX); + countSecWait[number_post] = count_delay; + + // если задержки нет - сразу печатаем + if(countSecWait[number_post] == 0) PostUserEvent(EVENT_CASH_PRINT_CHECK_POST1 + number_post); + + wash_State[number_post] = printCheck; + } } break; @@ -435,8 +457,8 @@ void UserAppTask(void *p_arg) break; case EVENT_KEY_F1: - testMoney = 100; - PostUserEvent(EVENT_CASH_INSERTED_POST1); + //testMoney = 100; + //PostUserEvent(EVENT_CASH_INSERTED_POST1); /*FIO4SET_bit.P4_28 = 1; OSTimeDly(50); @@ -459,10 +481,10 @@ void UserAppTask(void *p_arg) FIO4CLR_bit.P4_28 = 1;*/ break; case EVENT_KEY_F2: - PostUserEvent(EVENT_STOP_MONEY_POST1); + //PostUserEvent(EVENT_STOP_MONEY_POST1); break; case EVENT_KEY_F3: - PostUserEvent(EVENT_WAIT_CASH_PRINT_CHECK_POST1); + //PostUserEvent(EVENT_WAIT_CASH_PRINT_CHECK_POST1); break; #endif default: @@ -594,6 +616,14 @@ void UserPrintMoneyMenu(int post) sprintf(buf, " "); PrintUserMenuStr(buf, 2); } + else if(wash_State[post] == printCheck) + { + sprintf(buf, "Ожидание печати"); + PrintUserMenuStr(buf, 1); + + sprintf(buf, " "); + PrintUserMenuStr(buf, 2); + } if(post < COUNT_POST) sprintf(buf, " Пост %d", post + 1); diff --git a/PROJECT/menu/menu.h b/PROJECT/menu/menu.h index 8d95b86..7afc0ee 100644 --- a/PROJECT/menu/menu.h +++ b/PROJECT/menu/menu.h @@ -11,12 +11,10 @@ #define SYMB_GO_UP 0x87 #define SYMB_GO_DOWN 0x86 -#define SYMB_RIGHT_ARROW 0x13 -#define SYMB_DESC_MARK 0x84 -#define SYMB_IND_MARK 0x85 -#define SYMB_POINT_MARK 0xDF - - +#define SYMB_RIGHT_ARROW 0x3E +#define SYMB_DESC_MARK 0x3E +#define SYMB_IND_MARK 0x3C +#define SYMB_POINT_MARK 0x3E // структура описания пункта меню typedef struct{ diff --git a/PROJECT/services/coin.c b/PROJECT/services/coin.c index dae1f9c..adc83e3 100644 --- a/PROJECT/services/coin.c +++ b/PROJECT/services/coin.c @@ -86,10 +86,14 @@ void CoinTask(void *p_arg) last_settings_time = OSTimeGet(); } + OSTimeDly(1); + + #if OS_CRITICAL_METHOD == 3 + OS_CPU_SR cpu_sr = 0; + #endif + for(int i = 0; i < COUNT_POST + COUNT_VACUUM; i++) { - OSTimeDly(1); - if (enable_coin[i]) { if (GetCoinCount(i)) @@ -103,6 +107,7 @@ void CoinTask(void *p_arg) GetResetCoinCount(i); } + OS_ENTER_CRITICAL(); if (enable_signal[i]) { if (pend_upsignal_counter[i]) @@ -124,15 +129,12 @@ void CoinTask(void *p_arg) } } } + OS_EXIT_CRITICAL(); if (!cash_enable[i]) {GetResetCashCount(i); continue;} if(i >= COUNT_POST) continue; - #if OS_CRITICAL_METHOD == 3 - OS_CPU_SR cpu_sr = 0; - #endif OS_ENTER_CRITICAL(); - if (pend_cash_counter[i]) { // импульсы инкрементируем только после выдержки паузы diff --git a/settings/sk-mlpc2368.dni b/settings/sk-mlpc2368.dni index d512ab4..46bfeaa 100644 --- a/settings/sk-mlpc2368.dni +++ b/settings/sk-mlpc2368.dni @@ -14,7 +14,7 @@ Count=0 Enabled=0 ShowSource=1 [DebugChecksum] -Checksum=-216480961 +Checksum=-1687745374 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 @@ -155,9 +155,7 @@ Fmt0={W}0:curr_input 4 0 [Disassemble mode] mode=0 [Breakpoints2] -Bp0=_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\services\coin.c}.113.21" 0 0 1 "" 0 "" 0 -Bp1=_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\services\coin.c}.122.21" 0 0 1 "" 0 "" 0 -Count=2 +Count=0 [Log file] LoggingEnabled=_ 0 LogFile=_ "" diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt index d9286de..6366f1c 100644 --- a/settings/sk-mlpc2368.wsdt +++ b/settings/sk-mlpc2368.wsdt @@ -18,7 +18,7 @@ - 162272727 + 168272727 44062754221219 @@ -42,7 +42,7 @@ Workspace - sk-mlpc2368sk-mlpc2368/PROJECTsk-mlpc2368/PROJECT/appsk-mlpc2368/PROJECT/datask-mlpc2368/PROJECT/driverssk-mlpc2368/PROJECT/drivers/keyboardsk-mlpc2368/PROJECT/libssk-mlpc2368/PROJECT/menusk-mlpc2368/PROJECT/services + sk-mlpc2368sk-mlpc2368/PROJECTsk-mlpc2368/PROJECT/appsk-mlpc2368/PROJECT/datask-mlpc2368/PROJECT/driverssk-mlpc2368/PROJECT/drivers/keyboardsk-mlpc2368/PROJECT/drivers/lcdsk-mlpc2368/PROJECT/libssk-mlpc2368/PROJECT/menusk-mlpc2368/PROJECT/services @@ -52,14 +52,14 @@ - TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\services\console.c010933323332TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\data\fram_map.h020665665TextEditor$WS_DIR$\PROJECT\app\journal.c03901170811708TextEditor$WS_DIR$\PROJECT\services\time.c081625625TextEditor$WS_DIR$\PROJECT\app\journal.h03930573070TextEditor$WS_DIR$\PROJECT\data\data.h027688702TextEditor$WS_DIR$\PROJECT\data\datadesc.c05882625226268TextEditor$WS_DIR$\PROJECT\data\data.c034494269426TextEditor$WS_DIR$\PROJECT\menu\menudesc.c08403419934199TextEditor$WS_DIR$\PROJECT\services\coin.h00697697TextEditor$WS_DIR$\PROJECT\services\coin.c036981278127TextEditor$WS_DIR$\PROJECT\app\app_serv.c02397451745114TextEditor$WS_DIR$\PROJECT\data\datadesc.h01214641464TextEditor$WS_DIR$\OS\app\app.c02711311131TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.c015137963796TextEditor$WS_DIR$\PROJECT\services\fr.c010402708627086TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.h012575157517TextEditor$WS_DIR$\PROJECT\services\mode.c028763763TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00470470TextEditor$WS_DIR$\OS\uc\cpu\cpu.h08547014701TextEditor$WS_DIR$\PROJECT\menu\menu.h014928928TextEditor$WS_DIR$\OS\uc\os_ii\source\os_core.c013595689856898TextEditor$WS_DIR$\PROJECT\app\app_serv.h061223922390100000010000001 + TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\services\console.c010933323332TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\data\fram_map.h020665665TextEditor$WS_DIR$\PROJECT\app\journal.c03901170811708TextEditor$WS_DIR$\PROJECT\services\time.c081625625TextEditor$WS_DIR$\PROJECT\app\journal.h03930573070TextEditor$WS_DIR$\PROJECT\data\data.h027688702TextEditor$WS_DIR$\PROJECT\data\datadesc.c05882625226268TextEditor$WS_DIR$\PROJECT\data\data.c034494269426TextEditor$WS_DIR$\PROJECT\menu\menudesc.c08403419934199TextEditor$WS_DIR$\PROJECT\services\coin.h00697697TextEditor$WS_DIR$\PROJECT\services\coin.c010037013701TextEditor$WS_DIR$\PROJECT\app\app_serv.c0428131621316214TextEditor$WS_DIR$\PROJECT\data\datadesc.h01214641464TextEditor$WS_DIR$\OS\app\app.c02711311131TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.h012575157517TextEditor$WS_DIR$\PROJECT\services\mode.c028763763TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00470470TextEditor$WS_DIR$\OS\uc\os_ii\source\os_core.c013595689856898TextEditor$WS_DIR$\PROJECT\app\app_serv.h06122392239TextEditor$WS_DIR$\PROJECT\menu\menu.c016245484548TextEditor$WS_DIR$\PROJECT\drivers\lcd\lcd.c028669536953TextEditor$WS_DIR$\PROJECT\menu\menu.h062922920100000010000001 - iaridepm.enu1-2-2628253-2-2200146156250153523199219662461-2-22781282-2-212842801003125294427156250153523 + iaridepm.enu1-2-2715259-2-2200146156250153523203906753943-2-21911282-2-212841931003125202944156250153523