diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c index 6988ad7..86cb5b5 100644 --- a/PROJECT/app/app_serv.c +++ b/PROJECT/app/app_serv.c @@ -21,7 +21,7 @@ //#define _DEBUG_MONEY CPU_INT32U SystemTime; -CPU_INT32U money_timestamp[COUNT_POST]; +CPU_INT32U money_timestamp[COUNT_POST + COUNT_VACUUM]; CPU_INT08U EnabledChannelsNum; CPU_INT08U RecentChannel; CPU_INT08U UserMenuState; @@ -94,7 +94,6 @@ void AddOutPulses(int count, int len_ms) void UserAppTask(void *p_arg) { CPU_INT32U print_timeout; - CPU_INT32U print_mode; CPU_INT32U accmoney; int event; CPU_BOOLEAN dontRedraw = DEF_FALSE; @@ -102,22 +101,6 @@ void UserAppTask(void *p_arg) #ifdef BOARD_CENTRAL_CFG static CPU_INT08U fr_conn_ctr = 0; - -// { -// CPU_INT32U m=0; -// GetData(&AcceptedMoneyDesc, &m, 0, DATA_FLAG_DIRECT_INDEX); -// if (m) -// { -// EnabledChannelsNum = 0; -// for (CPU_INT08U i=0; i 1000UL * print_timeout) - { - UserPrintPrintBillMenu(post); - RefreshMenu(); - - // напечатаем чек - if (IsFiscalConnected()) - { - if (PrintFiscalBill(accmoney) == 0) - { - SaveEventRecord(RecentChannel, JOURNAL_EVENT_PRINT_BILL, GetTimeSec()); - } - } - IncCounter(RecentChannel, ChannelsPayedTime[RecentChannel], accmoney); - SetAcceptedMoney(0, post); - OSTimeDly(1000); - - // повесим меню "СПАСИБО" - if (IsFiscalConnected()) - { - UserPrintThanksMenu(post); - RefreshMenu(); - } - - OSTimeDly(1000); - LED_OK_OFF(); - } - } - else if (print_mode == 1) - { - // если настроена печать ПО КНОПКЕ, ждем таймаут отмены + // печать по внешнему сигналу, ждем таймаут отмены GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX); if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout) { @@ -269,6 +219,8 @@ void UserAppTask(void *p_arg) case EVENT_COIN_INSERTED_POST4: case EVENT_COIN_INSERTED_POST5: case EVENT_COIN_INSERTED_POST6: + case EVENT_COIN_INSERTED_VACUUM1: + case EVENT_COIN_INSERTED_VACUUM2: { CPU_INT32U cpp = 1; CPU_INT32U money, accmoney; @@ -381,48 +333,6 @@ void UserAppTask(void *p_arg) RefreshMenu(); break; } - - // -------------------------- - // находимся в рабочем режиме - // -------------------------- - GetData(&PrintModeDesc, &print_mode, 0, DATA_FLAG_SYSTEM_INDEX); - for(int post = 0; post < COUNT_POST; post++) - { - if (print_mode == 1) - { - // пользователь внес деньги и нажал СТАРТ + режим печати ПО КНОПКЕ - CPU_INT32U accmoney = GetAcceptedMoney(post); - - if (accmoney > 0) - { - UserPrintPrintBillMenu(post); - RefreshMenu(); - - // напечатаем чек - if (IsFiscalConnected()) - { - if (PrintFiscalBill(accmoney) == 0) - { - SaveEventRecord(RecentChannel, JOURNAL_EVENT_PRINT_BILL, GetTimeSec()); - } - } - - IncCounter(RecentChannel, ChannelsPayedTime[RecentChannel], accmoney); - SetAcceptedMoney(0, post); - OSTimeDly(1000); - - // повесим меню "СПАСИБО" - if (IsFiscalConnected()) - { - UserPrintThanksMenu(post); - RefreshMenu(); - } - - OSTimeDly(1000); - LED_OK_OFF(); - } - } - } break; case EVENT_CASH_PRINT_CHECK_POST1: @@ -433,6 +343,7 @@ void UserAppTask(void *p_arg) case EVENT_CASH_PRINT_CHECK_POST6: case EVENT_CASH_PRINT_CHECK_VACUUM1: case EVENT_CASH_PRINT_CHECK_VACUUM2: + if (GetMode() == MODE_WORK) // печатаем только в рабочем режиме { int number_post = event - EVENT_CASH_PRINT_CHECK_POST1; @@ -453,7 +364,7 @@ void UserAppTask(void *p_arg) } } - //IncCounter(RecentChannel, ChannelsPayedTime[RecentChannel], accmoney); + IncCounter(RecentChannel, ChannelsPayedTime[RecentChannel], accmoney); SetAcceptedMoney(0, number_post); OSTimeDly(1000); @@ -469,12 +380,16 @@ void UserAppTask(void *p_arg) } } break; + case EVENT_KEY_F1: PostUserEvent(EVENT_CASH_INSERTED_POST1); break; case EVENT_KEY_F2: PostUserEvent(EVENT_CASH_INSERTED_POST2); break; + case EVENT_KEY_F3: + PostUserEvent(EVENT_CASH_PRINT_CHECK_POST1); + break; #endif default: break; @@ -599,8 +514,10 @@ void UserPrintMoneyMenu(int post) if(post < COUNT_POST) sprintf(buf, " Пост %d", post + 1); - else + else if(post < COUNT_POST + COUNT_VACUUM) sprintf(buf, "Пылесос %d", post + 1 - COUNT_POST); + else + sprintf(buf, " "); PrintUserMenuStr(buf, 3); } diff --git a/PROJECT/app/journal.h b/PROJECT/app/journal.h index 11f6c2f..15faf2c 100644 --- a/PROJECT/app/journal.h +++ b/PROJECT/app/journal.h @@ -29,6 +29,9 @@ typedef struct{ #define JOURNAL_EVENT_MONEY_COIN_POST4 10 // событие получения монеты (кол-во рублей) пост 4 #define JOURNAL_EVENT_MONEY_COIN_POST5 11 // событие получения монеты (кол-во рублей) пост 5 #define JOURNAL_EVENT_MONEY_COIN_POST6 12 // событие получения монеты (кол-во рублей) пост 6 + // здесь добавить еще два события от пылесосов + //#define JOURNAL_EVENT_MONEY_COIN_VACUUM1 13 // событие получения монеты (кол-во рублей) пылесос 1 + //#define JOURNAL_EVENT_MONEY_COIN_VACUUM1 14 // событие получения монеты (кол-во рублей) пылесос 2 #define JOURNAL_EVENT_START_SESSION 13 // событие начала сеанса #define JOURNAL_EVENT_END_SESSION 14 // событие конца сеанса diff --git a/PROJECT/data/datadesc.c b/PROJECT/data/datadesc.c index 56a6835..01721fe 100644 --- a/PROJECT/data/datadesc.c +++ b/PROJECT/data/datadesc.c @@ -622,7 +622,7 @@ TDataDescStruct const EnableCoinDesc = { DATA_TYPE_ULONG, // тип параметра DATA_LOC_FRAM, // расположение параметра DATA_IS_ARRAY, // признак массива - COUNT_POST, // размер массива + COUNT_POST+ + COUNT_VACUUM,// размер массива &CoinIndexDesc, // указатель на десриптор индекса массива (void*)offsetof(TFramMap, DeviceConfig.EnableCoinAcceptor), // указатель на переменную или адрес FRAM (void*)&EnableCoinRange, // указатель на границы параметра @@ -646,7 +646,7 @@ TDataDescStruct const CoinPerPulseDesc = { DATA_TYPE_ULONG, // тип параметра DATA_LOC_FRAM, // расположение параметра DATA_IS_ARRAY, // признак массива - COUNT_POST, // размер массива + COUNT_POST+COUNT_VACUUM, // размер массива &CoinIndexDesc, // указатель на десриптор индекса массива (void*)offsetof(TFramMap, DeviceConfig.CoinPerPulse), // указатель на переменную или адрес FRAM (void*)&CoinPerPulseRange, // указатель на границы параметра diff --git a/PROJECT/data/datadesc.h b/PROJECT/data/datadesc.h index 2ec1260..9108e33 100644 --- a/PROJECT/data/datadesc.h +++ b/PROJECT/data/datadesc.h @@ -60,18 +60,16 @@ typedef struct{ }TChannelConfig; - - // структура конфигурации аппаратуры typedef struct{ - CPU_INT32U EnableValidator[COUNT_POST]; - CPU_INT32U EnableCoinAcceptor[COUNT_POST]; + CPU_INT32U EnableValidator[COUNT_POST + COUNT_VACUUM]; + CPU_INT32U EnableCoinAcceptor[COUNT_POST + COUNT_VACUUM]; CPU_INT32U EnableModem; CPU_INT32U EnableFiscal; CPU_INT32U EnableFiscalDayClear; CPU_INT32U ServiceName; - CPU_INT32U CoinPerPulse[COUNT_POST]; // цена импульса монетоприемника + CPU_INT32U CoinPerPulse[COUNT_POST + COUNT_VACUUM]; // цена импульса монетоприемника CPU_INT32U BillFormat; CPU_INT32U DisableFiscalErrors; // отключение реакции на ошибки ФР @@ -82,8 +80,8 @@ typedef struct{ CPU_INT32U ClearJournalAfterSend; CPU_INT32U StatSendHourMin; - CPU_INT32U CashMode[COUNT_POST]; - CPU_INT32U CashPerPulse[COUNT_POST]; // цена импульса купюрника + CPU_INT32U CashMode[COUNT_POST + COUNT_VACUUM]; + CPU_INT32U CashPerPulse[COUNT_POST + COUNT_VACUUM]; // цена импульса купюрника CPU_INT32U PrintTimeout; CPU_INT32U PrintTimeoutAfter; diff --git a/PROJECT/data/fram_map.h b/PROJECT/data/fram_map.h index 199c0f1..d4583b8 100644 --- a/PROJECT/data/fram_map.h +++ b/PROJECT/data/fram_map.h @@ -50,8 +50,8 @@ typedef struct CPU_INT08U manual_service_flag[4]; char manual_service_name[32]; - CPU_INT32U cash_pulse_len[COUNT_POST]; - CPU_INT32U cash_pause_len[COUNT_POST]; + CPU_INT32U cash_pulse_len[COUNT_POST + COUNT_VACUUM]; + CPU_INT32U cash_pause_len[COUNT_POST + COUNT_VACUUM]; CPU_INT32U TaxFormat; CPU_INT32U SubjSell; diff --git a/PROJECT/services/coin.c b/PROJECT/services/coin.c index 8d2aa21..85ef501 100644 --- a/PROJECT/services/coin.c +++ b/PROJECT/services/coin.c @@ -12,13 +12,13 @@ OS_STK CoinTaskStk[COIN_TASK_STK_SIZE]; void InitImpInput(void); CPU_INT32U CoinImpCounter[COUNT_POST + COUNT_VACUUM]; -CPU_INT32U CashImpCounter[COUNT_POST]; +CPU_INT32U CashImpCounter[COUNT_POST + COUNT_VACUUM]; static CPU_INT32U cash_pulse = 5000; static CPU_INT32U cash_pause = 2000; -static char pend_cash_counter[COUNT_POST]; -static CPU_INT32U pend_cash_timestamp[COUNT_POST]; +static char pend_cash_counter[COUNT_POST + COUNT_VACUUM]; +static CPU_INT32U pend_cash_timestamp[COUNT_POST + COUNT_VACUUM]; void SetCashPulseParam(CPU_INT32U pulse, CPU_INT32U pause) { @@ -36,8 +36,8 @@ void CoinTask(void *p_arg) CPU_INT32U enable_coin; CPU_INT32U cash_mode; CPU_INT32U cash_enable; - CPU_INT32U last_cash_count[COUNT_POST]; - CPU_INT32U last_cash_time[COUNT_POST]; + CPU_INT32U last_cash_count[COUNT_POST + COUNT_VACUUM]; + CPU_INT32U last_cash_time[COUNT_POST + COUNT_VACUUM]; CPU_INT32U last_settings_time = 0; while(1) @@ -179,7 +179,7 @@ CPU_INT32U GetResetCashCount(int index) // инициализация монетоприемника void InitCoin(void) { - for(int i = 0; i < COUNT_POST; i++) + for(int i = 0; i < COUNT_POST + COUNT_VACUUM; i++) { CoinImpCounter[i] = 0; CashImpCounter[i] = 0; @@ -193,8 +193,8 @@ void InitCoin(void) void InputCapture_ISR(void) { - static CPU_INT32U period[COUNT_POST + 2]; - static CPU_INT32U period_cash[COUNT_POST]; + static CPU_INT32U period[COUNT_POST + COUNT_VACUUM]; + static CPU_INT32U period_cash[COUNT_POST + COUNT_VACUUM]; static CPU_INT32U T3CR = 0; // наращиваем тики diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt index df4c376..a299459 100644 --- a/settings/sk-mlpc2368.wsdt +++ b/settings/sk-mlpc2368.wsdt @@ -52,14 +52,14 @@ - TextEditor$WS_DIR$\PROJECT\menu\menu.h04814241424TextEditor$WS_DIR$\PROJECT\app\control.h004949TextEditor$WS_DIR$\PROJECT\app\journal.c03781020510205TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00470470TextEditor$WS_DIR$\PROJECT\data\datadesc.c02603122054122054TextEditor$WS_DIR$\PROJECT\menu\menu.c020660496049TextEditor$WS_DIR$\OS\app\app.c02915301530TextEditor$WS_DIR$\PROJECT\data\data.h09223452345TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\PROJECT\data\data.c032891469146TextEditor$WS_DIR$\PROJECT\data\datadesc.h00257269TextEditor$WS_DIR$\PROJECT\menu\menudesc.c018097101271012TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\app\app_serv.c0679180981809813TextEditor$WS_DIR$\PROJECT\services\coin.c019210091009TextEditor$WS_DIR$\PROJECT\services\fr.c025981928192TextEditor$WS_DIR$\PROJECT\services\console.c010933323332TextEditor$WS_DIR$\OS\uc\cpu\cpu.h08545784589TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\data\fram_map.h04414414TextEditor$WS_DIR$\PROJECT\app\app_serv.h02817101740TextEditor$WS_DIR$\PROJECT\app\journal.h017167816780100000010000001 + TextEditor$WS_DIR$\PROJECT\menu\menu.h04814241424TextEditor$WS_DIR$\PROJECT\app\control.h004949TextEditor$WS_DIR$\PROJECT\app\journal.c03781020510205TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00470470TextEditor$WS_DIR$\PROJECT\data\datadesc.c02608122035122035TextEditor$WS_DIR$\PROJECT\menu\menu.c020660496049TextEditor$WS_DIR$\OS\app\app.c02915301530TextEditor$WS_DIR$\PROJECT\data\data.h09223452345TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\PROJECT\data\data.c032891469146TextEditor$WS_DIR$\PROJECT\data\datadesc.h00257269TextEditor$WS_DIR$\PROJECT\menu\menudesc.c018097101271012TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\app\app_serv.c0496151121511213TextEditor$WS_DIR$\PROJECT\services\coin.c037040874087TextEditor$WS_DIR$\PROJECT\services\fr.c025981928192TextEditor$WS_DIR$\PROJECT\services\console.c010933323332TextEditor$WS_DIR$\OS\uc\cpu\cpu.h08545784589TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\data\fram_map.h03810111011TextEditor$WS_DIR$\PROJECT\app\app_serv.h02812771304TextEditor$WS_DIR$\PROJECT\app\journal.h08160716070100000010000001 - iaridepm.enu1-2-2742253-2-2200200156250210305199219782334-2-21641282-2-212841661003125174553156250210305 + iaridepm.enu1-2-2592253-2-2200200156250210305199219624606-2-23141282-2-212843161003125332282156250210305