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