diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c index 175175b..e6c847d 100644 --- a/PROJECT/app/app_serv.c +++ b/PROJECT/app/app_serv.c @@ -105,6 +105,8 @@ static CPU_INT32U fiscal_enable; void DrawMenu(void) { + if (GetMode() != MODE_WORK) return; + if((SystemTime%2)) { if(currentPosition >= COUNT_POST + COUNT_VACUUM) @@ -204,10 +206,10 @@ void UserAppTask(void *p_arg) ErrorServer(); // дальше только в рабочем режиме - if (GetMode() != MODE_WORK) - { - break; - } +// if (GetMode() != MODE_WORK) +// { +// break; +// } for(int post = 0; post < COUNT_POST + COUNT_VACUUM; post++) { @@ -315,6 +317,9 @@ void UserAppTask(void *p_arg) CPU_INT32U money, accmoney = 0; int number_post = event - EVENT_COIN_INSERTED_POST1; + if(wash_State[number_post] != waitMoney && wash_State[number_post] != insertMoney) break; + if(!enable_coin[number_post]) break; + GetData(&CoinPerPulseDesc, &cpp, number_post, DATA_FLAG_DIRECT_INDEX); money = cpp * GetResetCoinCount(number_post) + testMoney; @@ -342,6 +347,9 @@ void UserAppTask(void *p_arg) CPU_INT32U money, accmoney = 0; int number_post = event - EVENT_CASH_INSERTED_POST1; + if(wash_State[number_post] != waitMoney && wash_State[number_post] != insertMoney) break; + if(!cash_enable[number_post]) break; + GetData(&CashPerPulseDesc, &cpp, number_post, DATA_FLAG_DIRECT_INDEX); money = cpp * GetResetCashCount(number_post) + testMoney; @@ -354,6 +362,7 @@ void UserAppTask(void *p_arg) if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_NOTE_POST1 + number_post, money); wash_State[number_post] = insertMoney; + testMoney = 0; } break; @@ -368,6 +377,9 @@ void UserAppTask(void *p_arg) CPU_INT32U money, accmoney = 0; int number_post = event - EVENT_BANK_INSERTED_POST1; + if(wash_State[number_post] != waitMoney && wash_State[number_post] != insertMoney) break; + if(!bank_enable[number_post]) break; + GetData(&BankPerPulseDesc, &cpp, number_post, DATA_FLAG_DIRECT_INDEX); money = cpp * GetResetbankCount(number_post) + testMoney; @@ -380,6 +392,7 @@ void UserAppTask(void *p_arg) if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_BANK_POST1 + number_post, money); wash_State[number_post] = insertMoney; + testMoney = 0; } break; @@ -449,7 +462,7 @@ void UserAppTask(void *p_arg) case EVENT_STOP_MONEY_POST4: case EVENT_STOP_MONEY_POST5: case EVENT_STOP_MONEY_POST6: - if (GetMode() == MODE_WORK) // + //if (GetMode() == MODE_WORK) // { int number_post = event - EVENT_STOP_MONEY_POST1; CPU_INT32U accmoney = 0; @@ -471,7 +484,7 @@ void UserAppTask(void *p_arg) case EVENT_WAIT_CASH_PRINT_CHECK_POST4: case EVENT_WAIT_CASH_PRINT_CHECK_POST5: case EVENT_WAIT_CASH_PRINT_CHECK_POST6: - if (GetMode() == MODE_WORK) // + //if (GetMode() == MODE_WORK) // { int number_post = event - EVENT_WAIT_CASH_PRINT_CHECK_POST1; int count_delay = 0; @@ -480,7 +493,7 @@ void UserAppTask(void *p_arg) accmoney = GetAcceptedMoney(number_post); accmoney += GetAcceptedBankMoney(number_post); - if (accmoney > 0) + if ((accmoney > 0) && (wash_State[number_post] != printCheck)) { // запустим задержку печати чека GetData(&PrintTimeoutDesc, &count_delay, number_post, DATA_FLAG_DIRECT_INDEX); @@ -505,7 +518,7 @@ void UserAppTask(void *p_arg) if (was_critical_error) break; - if (GetMode() == MODE_WORK) // печатаем только в рабочем режиме + //if (GetMode() == MODE_WORK) // прием денег идет всегда { int number_post = event - EVENT_CASH_PRINT_CHECK_POST1; CPU_INT32U accmoney = 0; @@ -529,7 +542,7 @@ void UserAppTask(void *p_arg) IncCounter(number_post, ChannelsPayedTime[number_post], accmoney); SetAcceptedMoney(0, number_post); - OSTimeDly(1000); + if (GetMode() == MODE_WORK) OSTimeDly(1000); // повесим меню "СПАСИБО" if (IsFiscalConnected()) @@ -538,7 +551,7 @@ void UserAppTask(void *p_arg) RefreshMenu(); } - OSTimeDly(1000); + if (GetMode() == MODE_WORK) OSTimeDly(1000); wash_State[number_post] = waitMoney; } @@ -561,7 +574,7 @@ void UserAppTask(void *p_arg) IncCounter(number_post, ChannelsPayedTime[number_post], accmoney); SetAcceptedBankMoney(0, number_post); - OSTimeDly(1000); + if (GetMode() == MODE_WORK) OSTimeDly(1000); // повесим меню "СПАСИБО" if (IsFiscalConnected()) @@ -570,7 +583,7 @@ void UserAppTask(void *p_arg) RefreshMenu(); } - OSTimeDly(1000); + if (GetMode() == MODE_WORK) OSTimeDly(1000); wash_State[number_post] = waitMoney; } } @@ -578,7 +591,7 @@ void UserAppTask(void *p_arg) case EVENT_KEY_F1: //testMoney = 100; - //PostUserEvent(EVENT_BANK_INSERTED_POST2); + //PostUserEvent(EVENT_COIN_INSERTED_POST2); /*FIO4SET_bit.P4_28 = 1; OSTimeDly(50); @@ -631,7 +644,7 @@ void UserStartupFunc(void) // инициализация данных CheckAllData(); - OnChangeInitByDefault(); + //OnChangeInitByDefault(); // проверим длинные счетчики CheckLongCounters(); @@ -708,6 +721,8 @@ void UserPrintMoneyMenu(int post) char buf[32]; CPU_INT32U accmoney; + if (GetMode() != MODE_WORK) return; + strcpy(buf, " "); PrintUserMenuStr(buf, 0); @@ -767,6 +782,8 @@ void UserPrintErrorMenu(void) { char buf[32]; + if (GetMode() != MODE_WORK) return; + if (TstErrorFlag(ERROR_FR_CONN)) { sprintf(buf, "ОШИБКА"); @@ -800,6 +817,9 @@ void WorkServer(void) void UserPrintPrintBillMenu(int post) { char buf[32]; + + if (GetMode() != MODE_WORK) return; + sprintf(buf, " "); PrintUserMenuStr(buf, 0); sprintf(buf, "Идeт печать"); @@ -818,6 +838,9 @@ void UserPrintPrintBillMenu(int post) void UserPrintThanksMenu(int post) { char buf[32]; + + if (GetMode() != MODE_WORK) return; + sprintf(buf, " "); PrintUserMenuStr(buf, 0); sprintf(buf, " СПАСИБО"); @@ -842,6 +865,9 @@ int ChannelBusy(CPU_INT08U ch) void UserPrintFirstMenu(void) { char buf[32]; + + if (GetMode() != MODE_WORK) return; + sprintf(buf, " "); PrintUserMenuStr(buf, 0); sprintf(buf, " ВНЕСИТЕ"); diff --git a/PROJECT/app/app_serv.h b/PROJECT/app/app_serv.h index d0851d0..e2acba0 100644 --- a/PROJECT/app/app_serv.h +++ b/PROJECT/app/app_serv.h @@ -116,4 +116,7 @@ extern void save_config_params(void); extern void init_config_params(void); extern void AddOutPulses(int count, int len_ms); +extern void ClearAcceptedMoney(int post); +extern void ClearAcceptedBankMoney(int post); + #endif //#ifndef _APP_SERV_H_ diff --git a/PROJECT/data/datadesc.c b/PROJECT/data/datadesc.c index 0660542..7b049e9 100644 --- a/PROJECT/data/datadesc.c +++ b/PROJECT/data/datadesc.c @@ -13,6 +13,7 @@ #include "time.h" #include "CRC16.h" #include "coin.h" +#include "app_serv.h" extern CPU_INT32U modem_status; @@ -1131,6 +1132,17 @@ void OnChangeInitByDefault(void) char name[32] = "Услуги автомойки\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; WriteArrayFram(offsetof(TFramMap, manual_service_flag), 4, (unsigned char*)&flag); WriteArrayFram(offsetof(TFramMap, manual_service_name), 32, (unsigned char*)&name); + + // очистим принятые деньги + for(int i = 0; i < COUNT_POST; i++) + { + ClearAcceptedBankMoney(i); + } + + for(int i = 0; i < COUNT_POST + COUNT_VACUUM; i++) + { + ClearAcceptedMoney(i); + } } diff --git a/PROJECT/services/coin.c b/PROJECT/services/coin.c index ded7bf1..5c8c5a5 100644 --- a/PROJECT/services/coin.c +++ b/PROJECT/services/coin.c @@ -184,6 +184,11 @@ void CoinTask(void *p_arg) { CoinDisable(); GetResetCoinCount(i); + + OS_ENTER_CRITICAL(); + pend_coin_counter[i] = 0; + pend_coin_timestamp[i] = 0; + OS_EXIT_CRITICAL(); } if(i >= COUNT_POST) continue; @@ -250,9 +255,24 @@ void CoinTask(void *p_arg) else { GetResetbankCount(i); + + OS_ENTER_CRITICAL(); + pend_bank_counter[i] = 0; + pend_bank_timestamp[i] = 0; + OS_EXIT_CRITICAL(); } - if (!cash_enable[i]) {GetResetCashCount(i); continue;} + if (!cash_enable[i]) + { + GetResetCashCount(i); + + OS_ENTER_CRITICAL(); + pend_cash_counter[i] = 0; + pend_cash_timestamp[i] = 0; + OS_EXIT_CRITICAL(); + + continue; + } OS_ENTER_CRITICAL(); if (pend_cash_counter[i]) diff --git a/PROJECT/services/fr.c b/PROJECT/services/fr.c index 15c3a25..ab7da9e 100644 --- a/PROJECT/services/fr.c +++ b/PROJECT/services/fr.c @@ -710,7 +710,11 @@ repeat_sell1: { if (service_name[i] == 0) ok = 1; } - sprintf(service_name, "%s пост %d", service_name, post + 1); + + if(post < COUNT_POST) + sprintf(service_name, "%s пост %d", service_name, post + 1); + else + sprintf(service_name, "%s пылесос %d", service_name, post + 1 - COUNT_POST); if (!ok) { @@ -804,7 +808,11 @@ repeat_sell2: { if (service_name[i] == 0) ok = 1; } - sprintf(service_name, "%s пост %d", service_name, post + 1); + + if(post < COUNT_POST) + sprintf(service_name, "%s пост %d", service_name, post + 1); + else + sprintf(service_name, "%s пылесос %d", service_name, post + 1 - COUNT_POST); if (!ok) { diff --git a/settings/sk-mlpc2368.dni b/settings/sk-mlpc2368.dni index b70d9d0..f4850a2 100644 --- a/settings/sk-mlpc2368.dni +++ b/settings/sk-mlpc2368.dni @@ -14,7 +14,7 @@ Count=0 Enabled=0 ShowSource=1 [DebugChecksum] -Checksum=161223186 +Checksum=420203469 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt index 5d4d6ee..89d8411 100644 --- a/settings/sk-mlpc2368.wsdt +++ b/settings/sk-mlpc2368.wsdt @@ -52,7 +52,7 @@ - TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\services\time.c081625625TextEditor$WS_DIR$\PROJECT\services\mode.c028763763TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.h03421786617866TextEditor$WS_DIR$\PROJECT\services\fr.h00348348TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.c06951805818058TextEditor$WS_DIR$\PROJECT\services\fr.c03901206712067TextEditor$WS_DIR$\PROJECT\services\coin.h03390390TextEditor$WS_DIR$\PROJECT\menu\menudesc.h02613901532TextEditor$WS_DIR$\PROJECT\data\data.c011535403540TextEditor$WS_DIR$\PROJECT\menu\menu.c04911513515135TextEditor$WS_DIR$\PROJECT\data\datadesc.c09454260742607TextEditor$WS_DIR$\PROJECT\services\coin.c09832463256TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00420429TextEditor$WS_DIR$\PROJECT\app\journal.c09230363036TextEditor$WS_DIR$\PROJECT\data\fram_map.h0010381038TextEditor$WS_DIR$\PROJECT\app\app_serv.h05314731473TextEditor$WS_DIR$\PROJECT\app\journal.h007070TextEditor$WS_DIR$\PROJECT\data\datadesc.h0016041604TextEditor$WS_DIR$\OS\app\app.c02711311131TextEditor$WS_DIR$\PROJECT\app\app_serv.c0577208632086322TextEditor$WS_DIR$\PROJECT\drivers\fram\fram.c09622562256TextEditor$WS_DIR$\PROJECT\menu\menudesc.c0144157674576740100000010000001 + TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\services\mode.c028763763TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.h03421786617866TextEditor$WS_DIR$\PROJECT\services\fr.h00348348TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.c06951805818058TextEditor$WS_DIR$\PROJECT\services\fr.c07862153421534TextEditor$WS_DIR$\PROJECT\services\coin.h03390390TextEditor$WS_DIR$\PROJECT\menu\menudesc.h02613901532TextEditor$WS_DIR$\PROJECT\data\data.c011535403540TextEditor$WS_DIR$\PROJECT\menu\menu.c06632179621796TextEditor$WS_DIR$\PROJECT\data\datadesc.c017427756677566TextEditor$WS_DIR$\PROJECT\services\coin.c024079727972TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00420429TextEditor$WS_DIR$\PROJECT\app\journal.c04671454414544TextEditor$WS_DIR$\PROJECT\data\fram_map.h00239239TextEditor$WS_DIR$\PROJECT\app\app_serv.h02510591084TextEditor$WS_DIR$\PROJECT\app\journal.h0847070TextEditor$WS_DIR$\PROJECT\data\datadesc.h012949064906TextEditor$WS_DIR$\OS\app\app.c02711311131TextEditor$WS_DIR$\PROJECT\app\app_serv.c0551216102161021TextEditor$WS_DIR$\PROJECT\drivers\fram\fram.c09622562256TextEditor$WS_DIR$\PROJECT\menu\menudesc.c014415767457674TextEditor$WS_DIR$\PROJECT\services\time.c0240698269820100000010000001 diff --git a/sk-mlpc2368.dep b/sk-mlpc2368.dep index 7f84a86..8e1fee5 100644 --- a/sk-mlpc2368.dep +++ b/sk-mlpc2368.dep @@ -1471,11 +1471,11 @@ BICOMP - 4 155 138 260 185 244 151 183 256 207 267 222 238 153 270 220 195 194 205 188 212 209 8 149 30 10 12 22 18 7 9 45 35 217 264 19 64 78 1 11 50 88 68 51 80 71 48 84 92 16 61 38 40 52 43 91 77 83 67 65 56 89 46 100 112 116 113 106 114 98 120 130 95 124 + 4 155 138 260 185 244 151 183 256 207 267 222 238 153 270 220 195 194 205 188 212 209 8 149 30 10 12 22 18 7 9 45 35 217 264 19 64 78 1 11 50 88 68 51 80 71 48 84 92 16 61 38 40 52 43 91 77 83 67 65 56 89 46 100 112 116 113 106 114 98 120 130 95 124 93 ICCARM - 4 155 138 260 185 241 244 151 183 256 207 267 222 238 153 270 220 195 194 205 188 212 209 8 149 30 10 12 22 18 7 9 45 35 217 264 19 64 78 1 11 50 88 68 51 80 71 48 84 92 16 61 38 40 52 43 91 77 83 67 65 56 89 46 100 112 116 113 106 114 98 120 130 95 124 + 4 155 138 260 185 241 244 151 183 256 207 267 222 238 153 270 220 195 194 205 188 212 209 8 149 30 10 12 22 18 7 9 45 35 217 264 19 64 78 1 11 50 88 68 51 80 71 48 84 92 16 61 38 40 52 43 91 77 83 67 65 56 89 46 100 112 116 113 106 114 98 120 130 95 124 93