diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c index b2a7d47..1a8a6d0 100644 --- a/PROJECT/app/app_serv.c +++ b/PROJECT/app/app_serv.c @@ -83,17 +83,6 @@ void AddOutPulses(int count, int len_ms) int drawPostInfo[COUNT_POST + COUNT_VACUUM] = {0,0,0,0,0,0,0,0}; int currentPosition = 0; -void DrawMenu(void) -{ - if((SystemTime%2)) - { - UserPrintMoneyMenu(currentPosition++); - RefreshMenu(); - - if(currentPosition >= COUNT_POST + COUNT_VACUUM) currentPosition = 0; - } -} - typedef enum { waitMoney = 0, @@ -103,7 +92,19 @@ typedef enum { } washStateEnum; -washStateEnum wash_State[COUNT_POST + COUNT_VACUUM] = {waitMoney,waitMoney,waitMoney,waitMoney,waitMoney,waitMoney,waitMoney,waitMoney}; +washStateEnum wash_State[COUNT_POST + COUNT_VACUUM] = {waitMoney, waitMoney, waitMoney, waitMoney, waitMoney, waitMoney, waitMoney, waitMoney}; + +int countSecWait[COUNT_POST + COUNT_VACUUM] = {0, 0, 0, 0, 0, 0, 0, 0}; + +void DrawMenu(void) +{ + if((SystemTime%2)) + { + UserPrintMoneyMenu(currentPosition++); + + if(currentPosition >= COUNT_POST + COUNT_VACUUM) currentPosition = 0; + } +} /* Сервер обработки событий пользователя @@ -122,6 +123,8 @@ void UserAppTask(void *p_arg) was_critical_error = 0; #endif + int testMoney = 0; + while (1) { if (GetUserEvent(&event)) @@ -208,6 +211,7 @@ void UserAppTask(void *p_arg) if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout) { SetAcceptedMoney(0, post); + wash_State[post] = waitMoney; } } } @@ -215,6 +219,14 @@ void UserAppTask(void *p_arg) { drawPostInfo[post] = 0; } + + if(countSecWait[post]) + { + countSecWait[post]--; + + // пришло время печати чека + if(!countSecWait[post]) PostUserEvent(EVENT_CASH_PRINT_CHECK_POST1 + post); + } } // принимаем деньги @@ -242,7 +254,7 @@ void UserAppTask(void *p_arg) GetData(&CoinPerPulseDesc, &cpp, number_post, DATA_FLAG_DIRECT_INDEX); - money = cpp*GetResetCoinCount(number_post); + money = cpp * GetResetCoinCount(number_post) + testMoney; accmoney = GetAcceptedMoney(number_post); accmoney += money; @@ -253,6 +265,7 @@ void UserAppTask(void *p_arg) if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_COIN_POST1 + number_post, money); wash_State[number_post] = insertMoney; + testMoney = 0; } break; case EVENT_CASH_INSERTED_POST1: @@ -268,7 +281,7 @@ void UserAppTask(void *p_arg) GetData(&CashPerPulseDesc, &cpp, number_post, DATA_FLAG_DIRECT_INDEX); - money = cpp * GetResetCashCount(number_post); + money = cpp * GetResetCashCount(number_post) + testMoney; accmoney = GetAcceptedMoney(number_post); accmoney += money; @@ -354,8 +367,27 @@ void UserAppTask(void *p_arg) int number_post = event - EVENT_STOP_MONEY_POST1; wash_State[number_post] = washing; } - break; + + case EVENT_WAIT_CASH_PRINT_CHECK_POST1: + case EVENT_WAIT_CASH_PRINT_CHECK_POST2: + case EVENT_WAIT_CASH_PRINT_CHECK_POST3: + case EVENT_WAIT_CASH_PRINT_CHECK_POST4: + case EVENT_WAIT_CASH_PRINT_CHECK_POST5: + case EVENT_WAIT_CASH_PRINT_CHECK_POST6: + case EVENT_WAIT_CASH_PRINT_CHECK_VACUUM1: + case EVENT_WAIT_CASH_PRINT_CHECK_VACUUM2: + if (GetMode() == MODE_WORK) // + { + 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; + } + break; + case EVENT_CASH_PRINT_CHECK_POST1: case EVENT_CASH_PRINT_CHECK_POST2: case EVENT_CASH_PRINT_CHECK_POST3: @@ -367,7 +399,7 @@ void UserAppTask(void *p_arg) if (GetMode() == MODE_WORK) // печатаем только в рабочем режиме { int number_post = event - EVENT_CASH_PRINT_CHECK_POST1; - + // здесь событие старта печати чека - включили насос или пылесос CPU_INT32U accmoney = GetAcceptedMoney(number_post); @@ -403,7 +435,10 @@ void UserAppTask(void *p_arg) break; case EVENT_KEY_F1: - FIO4SET_bit.P4_28 = 1; + testMoney = 100; + PostUserEvent(EVENT_CASH_INSERTED_POST1); + + /*FIO4SET_bit.P4_28 = 1; OSTimeDly(50); FIO4CLR_bit.P4_28 = 1; OSTimeDly(50); @@ -421,14 +456,14 @@ void UserAppTask(void *p_arg) OSTimeDly(50); FIO4SET_bit.P4_28 = 1; OSTimeDly(50); - FIO4CLR_bit.P4_28 = 1; + FIO4CLR_bit.P4_28 = 1;*/ break; - /*case EVENT_KEY_F2: - PostUserEvent(EVENT_CASH_INSERTED_POST2); + case EVENT_KEY_F2: + PostUserEvent(EVENT_STOP_MONEY_POST1); break; case EVENT_KEY_F3: - PostUserEvent(EVENT_CASH_PRINT_CHECK_POST1); - break;*/ + PostUserEvent(EVENT_WAIT_CASH_PRINT_CHECK_POST1); + break; #endif default: break; @@ -532,12 +567,34 @@ void UserPrintMoneyMenu(int post) strcpy(buf, " "); PrintUserMenuStr(buf, 0); - sprintf(buf, " Внесите деньги"); - PrintUserMenuStr(buf, 1); - accmoney = GetAcceptedMoney(post); - sprintf(buf, "Принято %d руб.", accmoney); - PrintUserMenuStr(buf, 2); - + + if(wash_State[post] == waitMoney) + { + sprintf(buf, " Внесите деньги"); + PrintUserMenuStr(buf, 1); + + sprintf(buf, " "); + PrintUserMenuStr(buf, 2); + } + else if(wash_State[post] == insertMoney) + { + accmoney = GetAcceptedMoney(post); + + sprintf(buf, " Внесите деньги"); + PrintUserMenuStr(buf, 1); + + sprintf(buf, "Принято %d руб.", accmoney); + PrintUserMenuStr(buf, 2); + } + else if(wash_State[post] == washing) + { + sprintf(buf, "Началась мойка"); + PrintUserMenuStr(buf, 1); + + sprintf(buf, " "); + PrintUserMenuStr(buf, 2); + } + if(post < COUNT_POST) sprintf(buf, " Пост %d", post + 1); else if(post < COUNT_POST + COUNT_VACUUM) @@ -548,7 +605,7 @@ void UserPrintMoneyMenu(int post) PrintUserMenuStr(buf, 3); } -// вывод меню о невозможости работы +// вывод меню о невозможности работы void UserPrintErrorMenu(void) { char buf[32]; diff --git a/PROJECT/app/app_serv.h b/PROJECT/app/app_serv.h index 38f1692..552c4c6 100644 --- a/PROJECT/app/app_serv.h +++ b/PROJECT/app/app_serv.h @@ -63,13 +63,21 @@ enum{ EVENT_STOP_MONEY_VACUUM1, EVENT_STOP_MONEY_VACUUM2, + EVENT_WAIT_CASH_PRINT_CHECK_POST1, + EVENT_WAIT_CASH_PRINT_CHECK_POST2, + EVENT_WAIT_CASH_PRINT_CHECK_POST3, + EVENT_WAIT_CASH_PRINT_CHECK_POST4, + EVENT_WAIT_CASH_PRINT_CHECK_POST5, + EVENT_WAIT_CASH_PRINT_CHECK_POST6, + EVENT_WAIT_CASH_PRINT_CHECK_VACUUM1, + EVENT_WAIT_CASH_PRINT_CHECK_VACUUM2, + EVENT_CASH_PRINT_CHECK_POST1, EVENT_CASH_PRINT_CHECK_POST2, EVENT_CASH_PRINT_CHECK_POST3, EVENT_CASH_PRINT_CHECK_POST4, EVENT_CASH_PRINT_CHECK_POST5, EVENT_CASH_PRINT_CHECK_POST6, - EVENT_CASH_PRINT_CHECK_VACUUM1, EVENT_CASH_PRINT_CHECK_VACUUM2, diff --git a/PROJECT/data/datadesc.c b/PROJECT/data/datadesc.c index 248278a..bb29bcb 100644 --- a/PROJECT/data/datadesc.c +++ b/PROJECT/data/datadesc.c @@ -614,7 +614,7 @@ TDataDescStruct const PrintTimeoutDesc = { DATA_NO_INDEX, // признак индексного параметра (список строк) NULL, // указатель на список строк для индексного параметра DATA_INIT_DISABLE, - 1 // значение по умолчанию + 5 // значение по умолчанию }; /************************************* diff --git a/PROJECT/menu/menudesc.c b/PROJECT/menu/menudesc.c index 7448210..3331e1e 100644 --- a/PROJECT/menu/menudesc.c +++ b/PROJECT/menu/menudesc.c @@ -868,8 +868,8 @@ const TMenuLine line_FrMenu_12 = { NULL }; -const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, /*&line_FrMenu_2, &line_FrMenu_3,*/ &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, &line_FrMenu_10, &line_FrMenu_11, &line_FrMenu_12, NULL}; -const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 11, MENU_PANEL_STANDARD}; +const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, /*&line_FrMenu_2,*/ &line_FrMenu_3, &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, &line_FrMenu_10, &line_FrMenu_11, &line_FrMenu_12, NULL}; +const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 12, MENU_PANEL_STANDARD}; /*********************************** МЕНЮ НАСТРОЙКА МОНЕТОПРИЕМНИКОВ diff --git a/PROJECT/services/coin.c b/PROJECT/services/coin.c index b6eb90a..dae1f9c 100644 --- a/PROJECT/services/coin.c +++ b/PROJECT/services/coin.c @@ -110,7 +110,7 @@ void CoinTask(void *p_arg) if (OSTimeGet() - pend_signal_timestamp[i] > signal_pulse[i]) { // есть удержание сигнала печати - PostUserEvent(EVENT_CASH_PRINT_CHECK_POST1 + i); + PostUserEvent(EVENT_WAIT_CASH_PRINT_CHECK_POST1 + i); pend_upsignal_counter[i] = 0; } } @@ -805,7 +805,7 @@ void InitImpInput (void) // сигнал печати чека пост 1 PINSEL9_bit.P4_28 = 0; PINMODE9_bit.P4_28 = 0; - FIO4DIR_bit.P4_28 = 1; + FIO4DIR_bit.P4_28 = 0; FIO4MASK_bit.P4_28 = 0; // купюроприемник 2 @@ -947,6 +947,8 @@ void InitImpInput (void) T3IR = 0xFF; + prev_input = curr_input = input_register(); + OS_EXIT_CRITICAL(); } diff --git a/settings/sk-mlpc2368.dni b/settings/sk-mlpc2368.dni index a803084..d512ab4 100644 --- a/settings/sk-mlpc2368.dni +++ b/settings/sk-mlpc2368.dni @@ -14,7 +14,7 @@ Count=0 Enabled=0 ShowSource=1 [DebugChecksum] -Checksum=-1718622406 +Checksum=-216480961 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 @@ -155,7 +155,9 @@ Fmt0={W}0:curr_input 4 0 [Disassemble mode] mode=0 [Breakpoints2] -Count=0 +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 [Log file] LoggingEnabled=_ 0 LogFile=_ "" diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt index 234681b..d9286de 100644 --- a/settings/sk-mlpc2368.wsdt +++ b/settings/sk-mlpc2368.wsdt @@ -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\menu\menudesc.c07313191931939TextEditor$WS_DIR$\PROJECT\data\data.h027688702TextEditor$WS_DIR$\PROJECT\data\datadesc.c04215771597TextEditor$WS_DIR$\PROJECT\data\data.c034494269426TextEditor$WS_DIR$\PROJECT\services\coin.h00697697TextEditor$WS_DIR$\PROJECT\services\coin.c010233533368TextEditor$WS_DIR$\PROJECT\app\app_serv.c0376128201282014TextEditor$WS_DIR$\PROJECT\data\datadesc.h02513631363TextEditor$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.c013595686956869TextEditor$WS_DIR$\PROJECT\app\app_serv.h049153615580100000010000001 + 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 - iaridepm.enu1-2-2540253-2-2200146156250210072199219779856-2-21101282-2-212841121003125161151156250210072 + iaridepm.enu1-2-2628253-2-2200146156250153523199219662461-2-22781282-2-212842801003125294427156250153523