diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c
index 86cb5b5..d444eb4 100644
--- a/PROJECT/app/app_serv.c
+++ b/PROJECT/app/app_serv.c
@@ -22,20 +22,13 @@
CPU_INT32U SystemTime;
CPU_INT32U money_timestamp[COUNT_POST + COUNT_VACUUM];
-CPU_INT08U EnabledChannelsNum;
-CPU_INT08U RecentChannel;
-CPU_INT08U UserMenuState;
- #define USER_STATE_FIRST_PAGE 0
- #define USER_STATE_ACCEPT_MONEY 1
- #define USER_STATE_SHOW_THANKS 2
-CPU_INT08U ThanksCtr;
-CPU_INT08U ChannelsState[CHANNELS_NUM];
+CPU_INT08U ChannelsState[COUNT_POST + COUNT_VACUUM];
#define CHANNEL_STATE_FREE 0
#define CHANNEL_STATE_BUSY 1
#define CHANNEL_STATE_DISABLED 2
-CPU_INT32U ChannelsCounters[CHANNELS_NUM];
-CPU_INT32U ChannelsPayedTime[CHANNELS_NUM];
+CPU_INT32U ChannelsCounters[COUNT_POST + COUNT_VACUUM];
+CPU_INT32U ChannelsPayedTime[COUNT_POST + COUNT_VACUUM];
CPU_INT32U incas_bill_nom_counter[24];
CPU_INT32U incas_common_bill_counter;
@@ -88,7 +81,21 @@ void AddOutPulses(int count, int len_ms)
#endif
-/*!
+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;
+ }
+}
+
+/*
Сервер обработки событий пользователя
*/
void UserAppTask(void *p_arg)
@@ -96,7 +103,6 @@ void UserAppTask(void *p_arg)
CPU_INT32U print_timeout;
CPU_INT32U accmoney;
int event;
- CPU_BOOLEAN dontRedraw = DEF_FALSE;
#ifdef BOARD_CENTRAL_CFG
@@ -112,13 +118,24 @@ void UserAppTask(void *p_arg)
{
switch (event){
#ifdef BOARD_CENTRAL_CFG
- case EVENT_SEC:
- // проверка режима
- CheckMode();
-
- // прочитаем текущее время
- SystemTime = GetTimeSec();
+ case EVENT_UPATE_RTC:
+ {
+ // прочитаем текущее время
+ CPU_INT32U time = GetTimeSec();
+
+ if(SystemTime != time)
+ {
+ SystemTime = time;
+ PostUserEvent(EVENT_SEC);
+ }
+ // проверка режима
+ CheckMode();
+
+ }
+ break;
+ case EVENT_SEC:
+
// рабочий сервер - счетчики, состояния и т.п.
WorkServer();
@@ -147,7 +164,8 @@ void UserAppTask(void *p_arg)
if (TstCriticalErrors())
{
UserPrintErrorMenu();
- RefreshMenu();
+ RefreshMenu();
+
// выключим прием денег
if (was_critical_error == 0)
{
@@ -164,48 +182,41 @@ void UserAppTask(void *p_arg)
break;
}
- dontRedraw = DEF_FALSE;
-
for(int post = 0; post < COUNT_POST + COUNT_VACUUM; post++)
{
accmoney = GetAcceptedMoney(post);
if (accmoney > 0)
{
- UserPrintMoneyMenu(post);
- RefreshMenu();
-
- dontRedraw = DEF_TRUE;
+ drawPostInfo[post] = 1;
LED_OK_ON();
CheckFiscalStatus();
+ // печать по внешнему сигналу, ждем таймаут отмены
+ GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX);
+ if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout)
{
- // печать по внешнему сигналу, ждем таймаут отмены
- GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX);
- if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout)
- {
- SetAcceptedMoney(0, post);
- UserPrintThanksMenu(post);
- RefreshMenu();
- OSTimeDly(1000);
- LED_OK_OFF();
- }
+ SetAcceptedMoney(0, post);
+
+ UserPrintThanksMenu(post);
+ RefreshMenu();
+
+ OSTimeDly(1000);
+ LED_OK_OFF();
}
}
else
{
+ drawPostInfo[post] = 0;
+
LED_OK_OFF();
- }
-
- // принимаем деньги
- if(!dontRedraw)
- {
- UserPrintMoneyMenu(0xFFFF);
- RefreshMenu();
- }
+ }
}
+ // принимаем деньги
+ DrawMenu();
+
break;
case EVENT_MODE_CHANGE:
@@ -235,14 +246,8 @@ void UserAppTask(void *p_arg)
SetAcceptedMoney(accmoney, number_post);
money_timestamp[number_post] = OSTimeGet();
-
- if (UserMenuState == USER_STATE_ACCEPT_MONEY)
- {
- UserPrintMoneyMenu(number_post);
- RefreshMenu();
- }
-
- if (money) SaveEventRecord(RecentChannel, JOURNAL_EVENT_MONEY_COIN_POST1 + number_post, money);
+
+ if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_COIN_POST1 + number_post, money);
}
break;
case EVENT_CASH_INSERTED_POST1:
@@ -264,14 +269,8 @@ void UserAppTask(void *p_arg)
accmoney += money;
SetAcceptedMoney(accmoney, number_post);
money_timestamp[number_post] = OSTimeGet();
-
- if (UserMenuState == USER_STATE_ACCEPT_MONEY)
- {
- UserPrintMoneyMenu(number_post);
- RefreshMenu();
- }
-
- if (money) SaveEventRecord(RecentChannel, JOURNAL_EVENT_MONEY_NOTE_POST1 + number_post, money);
+
+ if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_NOTE_POST1 + number_post, money);
}
break;
@@ -360,11 +359,11 @@ void UserAppTask(void *p_arg)
{
if (PrintFiscalBill(accmoney) == 0) // здесь добавить с какого поста чек
{
- SaveEventRecord(RecentChannel, JOURNAL_EVENT_PRINT_BILL, GetTimeSec());
+ SaveEventRecord(number_post, JOURNAL_EVENT_PRINT_BILL_POST1 + number_post, GetTimeSec());
}
}
- IncCounter(RecentChannel, ChannelsPayedTime[RecentChannel], accmoney);
+ IncCounter(number_post, ChannelsPayedTime[number_post], accmoney);
SetAcceptedMoney(0, number_post);
OSTimeDly(1000);
diff --git a/PROJECT/app/app_serv.h b/PROJECT/app/app_serv.h
index 9a6d4be..85983bf 100644
--- a/PROJECT/app/app_serv.h
+++ b/PROJECT/app/app_serv.h
@@ -36,6 +36,7 @@ extern CPU_INT32U incas_common_bill_counter;
enum{
EVENT_SEC = 1,
EVENT_STARTUP,
+ EVENT_UPATE_RTC,
EVENT_COIN_INSERTED_POST1,
EVENT_COIN_INSERTED_POST2,
diff --git a/PROJECT/app/journal.c b/PROJECT/app/journal.c
index c52229f..d2ab491 100644
--- a/PROJECT/app/journal.c
+++ b/PROJECT/app/journal.c
@@ -163,6 +163,12 @@ void GetEventStr(char* str, char event)
case JOURNAL_EVENT_MONEY_COIN_POST6:
sprintf(str, "Вн.монеты пост 6");
break;
+ case JOURNAL_EVENT_MONEY_COIN_VACUUM1:
+ sprintf(str, "Вн.монеты пыл.1");
+ break;
+ case JOURNAL_EVENT_MONEY_COIN_VACUUM2:
+ sprintf(str, "Вн.монеты пыл.2");
+ break;
case JOURNAL_EVENT_START_SESSION:
sprintf(str, "Печать чека ");
@@ -173,9 +179,32 @@ void GetEventStr(char* str, char event)
case JOURNAL_EVENT_DEVICE_ON:
sprintf(str, "Включение");
break;
- case JOURNAL_EVENT_PRINT_BILL:
- sprintf(str, "Печать чека");
+
+ case JOURNAL_EVENT_PRINT_BILL_POST1:
+ sprintf(str, "Печать чека пост 1");
break;
+ case JOURNAL_EVENT_PRINT_BILL_POST2:
+ sprintf(str, "Печать чека пост 2");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST3:
+ sprintf(str, "Печать чека пост 3");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST4:
+ sprintf(str, "Печать чека пост 4");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST5:
+ sprintf(str, "Печать чека пост 5");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST6:
+ sprintf(str, "Печать чека пост 6");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_VACUUM1:
+ sprintf(str, "Печать чека пыл.1");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_VACUUM2:
+ sprintf(str, "Печать чека пыл.2");
+ break;
+
case JOURNAL_EVENT_PRINT_Z:
sprintf(str, "Печать отчета о закр.см.");
break;
@@ -246,6 +275,12 @@ void GetEventStrEng(char* str, char event)
case JOURNAL_EVENT_MONEY_COIN_POST6:
sprintf(str, " | Vneseny monety post 6");
break;
+ case JOURNAL_EVENT_MONEY_COIN_VACUUM1:
+ sprintf(str, " | Vneseny monety vacuu1");
+ break;
+ case JOURNAL_EVENT_MONEY_COIN_VACUUM2:
+ sprintf(str, " | Vneseny monety vacuu2");
+ break;
case JOURNAL_EVENT_START_SESSION:
sprintf(str, " | Print bill ");
@@ -256,9 +291,32 @@ void GetEventStrEng(char* str, char event)
case JOURNAL_EVENT_DEVICE_ON:
sprintf(str, " | Vkluchenie ");
break;
- case JOURNAL_EVENT_PRINT_BILL:
- sprintf(str, " | Pechat' checka ");
+
+ case JOURNAL_EVENT_PRINT_BILL_POST1:
+ sprintf(str, " | Pechat' checka post 1");
break;
+ case JOURNAL_EVENT_PRINT_BILL_POST2:
+ sprintf(str, " | Pechat' checka post 2");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST3:
+ sprintf(str, " | Pechat' checka post 3");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST4:
+ sprintf(str, " | Pechat' checka post 4");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST5:
+ sprintf(str, " | Pechat' checka post 5");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_POST6:
+ sprintf(str, " | Pechat' checka post 6");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_VACUUM1:
+ sprintf(str, " | Pechat' checka vacuu1");
+ break;
+ case JOURNAL_EVENT_PRINT_BILL_VACUUM2:
+ sprintf(str, " | Pechat' checka vacuu2");
+ break;
+
case JOURNAL_EVENT_PRINT_Z:
sprintf(str, " | Pechat' Z-otcheta ");
break;
@@ -321,7 +379,7 @@ void PrintEventJournalRecordEng(char* str, TEventRecord *record)
{
sprintf(&str[strlen(str)], "");
}
- else if (record->event == JOURNAL_EVENT_PRINT_BILL)
+ if ((record->event >= JOURNAL_EVENT_PRINT_BILL_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_VACUUM2))
{
sprintf(&str[strlen(str)], " ");
}
diff --git a/PROJECT/app/journal.h b/PROJECT/app/journal.h
index 15faf2c..b4036e5 100644
--- a/PROJECT/app/journal.h
+++ b/PROJECT/app/journal.h
@@ -29,28 +29,36 @@ 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_MONEY_COIN_VACUUM1 13 // событие получения монеты (кол-во рублей) пылесос 1
+ #define JOURNAL_EVENT_MONEY_COIN_VACUUM2 14 // событие получения монеты (кол-во рублей) пылесос 2
- #define JOURNAL_EVENT_START_SESSION 13 // событие начала сеанса
- #define JOURNAL_EVENT_END_SESSION 14 // событие конца сеанса
- #define JOURNAL_EVENT_DEVICE_ON 16 // включение устройства
- #define JOURNAL_EVENT_PRINT_BILL 17 // печать чека
- #define JOURNAL_EVENT_PRINT_Z 18 // печать z-отчета
- #define JOURNAL_EVENT_PRINT_X 19 // печать x-отчета
- #define JOURNAL_EVENT_PRINT_BUF 20 // печать x-отчета
- #define JOURNAL_EVENT_CHANGE_MODE 21 // смена режима
- #define JOURNAL_EVENT_INCASSATION 22 // инкассация
- #define JOURNAL_EVENT_PASS_FAIL 23 // неверный ввод пароля
- #define JOURNAL_EVENT_EMAIL_OK 24 // правильно отправлен email
- #define JOURNAL_EVENT_EMAIL_FAIL 25 // ошибка при отправке email
+ #define JOURNAL_EVENT_START_SESSION 15 // событие начала сеанса
+ #define JOURNAL_EVENT_END_SESSION 16 // событие конца сеанса
+ #define JOURNAL_EVENT_DEVICE_ON 18 // включение устройства
+
+ #define JOURNAL_EVENT_PRINT_BILL_POST1 19 // печать чека пост 1
+ #define JOURNAL_EVENT_PRINT_BILL_POST2 20 // печать чека пост 2
+ #define JOURNAL_EVENT_PRINT_BILL_POST3 21 // печать чека пост 3
+ #define JOURNAL_EVENT_PRINT_BILL_POST4 22 // печать чека пост 4
+ #define JOURNAL_EVENT_PRINT_BILL_POST5 23 // печать чека пост 5
+ #define JOURNAL_EVENT_PRINT_BILL_POST6 24 // печать чека пост 6
+ #define JOURNAL_EVENT_PRINT_BILL_VACUUM1 25 // печать чека пылесос 1
+ #define JOURNAL_EVENT_PRINT_BILL_VACUUM2 26 // печать чека пылесос 2
+
+ #define JOURNAL_EVENT_PRINT_Z 27 // печать z-отчета
+ #define JOURNAL_EVENT_PRINT_X 28 // печать x-отчета
+ #define JOURNAL_EVENT_PRINT_BUF 29 // печать x-отчета
+ #define JOURNAL_EVENT_CHANGE_MODE 30 // смена режима
+ #define JOURNAL_EVENT_INCASSATION 31 // инкассация
+ #define JOURNAL_EVENT_PASS_FAIL 32 // неверный ввод пароля
+ #define JOURNAL_EVENT_EMAIL_OK 33 // правильно отправлен email
+ #define JOURNAL_EVENT_EMAIL_FAIL 34 // ошибка при отправке email
// ошибка связи с фискальником
- #define ERROR_FR_CONN 26
+ #define ERROR_FR_CONN 35
// ВСЕ ОШИБКИ ФР ФАТАЛЬНЫЕ
- #define ERROR_FR 27
+ #define ERROR_FR 36
#define JOURNAL_EVENTS_COUNT (ERROR_FR+FR_ERROR_NUMBER) // число событий
diff --git a/PROJECT/data/datadesc.c b/PROJECT/data/datadesc.c
index 01721fe..cef03a5 100644
--- a/PROJECT/data/datadesc.c
+++ b/PROJECT/data/datadesc.c
@@ -569,20 +569,112 @@ TDataDescStruct const StatSendHourMinDesc = {
9
};
+/*************************************
+ Индекс при настройке сигналов
+*************************************/
+TRangeValueULONG const SignalIndexRange = {0, 7};
+CPU_INT08U const SignalIndexName[] = "НАСТ.СИГН.ПЕЧ.";
+CPU_INT08U const SignalIndex_str0[] = "1";
+CPU_INT08U const SignalIndex_str1[] = "2";
+CPU_INT08U const SignalIndex_str2[] = "3";
+CPU_INT08U const SignalIndex_str3[] = "4";
+CPU_INT08U const SignalIndex_str4[] = "5";
+CPU_INT08U const SignalIndex_str5[] = "6";
+CPU_INT08U const SignalIndex_str6[] = "П1";
+CPU_INT08U const SignalIndex_str7[] = "П2";
+CPU_INT08U const *SignalIndexList[] = {SignalIndex_str0, SignalIndex_str1,SignalIndex_str2,SignalIndex_str3,SignalIndex_str4,SignalIndex_str5,SignalIndex_str6,SignalIndex_str7};
+
+CPU_INT32U CoinIndex = 0;
+
+void OnChangeSignalIndex(void)
+{
+}
+
+TDataDescStruct const SignalIndexDesc = {
+ DATA_DESC_EDIT, // тип дескриптора
+ DATA_TYPE_ULONG, // тип параметра
+ DATA_LOC_RAM, // расположение параметра
+ DATA_NO_ARRAY, // признак массива
+ 0, // размер массива
+ NULL, // указатель на десриптор индекса массива
+ (void*)&CoinIndex, // указатель на переменную или адрес FRAM
+ (void*)&SignalIndexRange, // указатель на границы параметра
+ OnChangeSignalIndex, // функция по изменению
+ 0, // смещение между элементами в массиве
+ SignalIndexName, // указатель на строку названия параметра
+ DATA_IS_INDEX, // признак индексного параметра (список строк)
+ SignalIndexList, // указатель на список строк для индексного параметра
+ DATA_INIT_ENABLE,
+ 0
+};
+
+/*************************************
+ Включение сигнала печати
+*************************************/
+TRangeValueULONG const EnableSignalRange = {0, 1};
+CPU_INT08U const EnableSignalName[] = "Сигнал ";
+CPU_INT08U const *EnableSignalList[] = {OnOffList_str0, OnOffList_str1};
+
+void OnchangeEnableSignal(void)
+{
+}
+
+TDataDescStruct const EnableSignalDesc = {
+ DATA_DESC_EDIT, // тип дескриптора
+ DATA_TYPE_ULONG, // тип параметра
+ DATA_LOC_FRAM, // расположение параметра
+ DATA_IS_ARRAY, // признак массива
+ COUNT_POST+COUNT_VACUUM,// размер массива
+ &SignalIndexDesc, // указатель на десриптор индекса массива
+ (void*)offsetof(TFramMap, enableSignalPrint), // указатель на переменную или адрес FRAM
+ (void*)&EnableSignalRange, // указатель на границы параметра
+ OnchangeEnableSignal, // функция по изменению
+ sizeof(CPU_INT32U), // смещение между элементами в массиве
+ EnableSignalName, // указатель на строку названия параметра
+ DATA_IS_INDEX, // признак индексного параметра (список строк)
+ EnableSignalList, // указатель на список строк для индексного параметра
+ DATA_INIT_DISABLE,
+ 1
+};
+
+/*************************************
+ Длительность импульса сигнала печати
+*************************************/
+TRangeValueULONG const SignalPulseRange = {1, 60};
+CPU_INT08U const SignalPulseName[] = "Длит.сек.";
+
+TDataDescStruct const SignalPulseDesc = {
+ DATA_DESC_EDIT, // тип дескриптора
+ DATA_TYPE_ULONG, // тип параметра
+ DATA_LOC_FRAM, // расположение параметра
+ DATA_IS_ARRAY, // признак массива
+ COUNT_POST+COUNT_VACUUM, // размер массива
+ &SignalIndexDesc, // указатель на десриптор индекса массива
+ (void*)offsetof(TFramMap, signal_pulse_len), // указатель на переменную или адрес FRAM
+ (void*)&SignalPulseRange, // указатель на границы параметра
+ NULL, // функция по изменению
+ sizeof(CPU_INT32U), // смещение между элементами в массиве
+ SignalPulseName, // указатель на строку названия параметра
+ DATA_NO_INDEX, // признак индексного параметра (список строк)
+ NULL, // указатель на список строк для индексного параметра
+ DATA_INIT_DISABLE,
+ 1 // значение по умолчанию
+};
+
/*************************************
Индекс при настройке монетоприемников
*************************************/
-TRangeValueULONG const CoinIndexRange = {0, 5};
-CPU_INT08U const CoinIndexName[] = "НАСТР.МОНЕТОПР.";
+TRangeValueULONG const CoinIndexRange = {0, 7};
+CPU_INT08U const CoinIndexName[] = "НАСТ.МОНЕТОПР.";
CPU_INT08U const CoinIndex_str0[] = "1";
CPU_INT08U const CoinIndex_str1[] = "2";
CPU_INT08U const CoinIndex_str2[] = "3";
CPU_INT08U const CoinIndex_str3[] = "4";
CPU_INT08U const CoinIndex_str4[] = "5";
CPU_INT08U const CoinIndex_str5[] = "6";
-CPU_INT08U const *CoinIndexList[] = {CoinIndex_str0, CoinIndex_str1,CoinIndex_str2,CoinIndex_str3,CoinIndex_str4,CoinIndex_str5};
-
-CPU_INT32U CoinIndex = 0;
+CPU_INT08U const CoinIndex_str6[] = "П1";
+CPU_INT08U const CoinIndex_str7[] = "П2";
+CPU_INT08U const *CoinIndexList[] = {CoinIndex_str0, CoinIndex_str1,CoinIndex_str2,CoinIndex_str3,CoinIndex_str4,CoinIndex_str5,CoinIndex_str6,CoinIndex_str7};
void OnChangeCoinIndex(void)
{
@@ -622,7 +714,7 @@ TDataDescStruct const EnableCoinDesc = {
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_IS_ARRAY, // признак массива
- COUNT_POST+ + COUNT_VACUUM,// размер массива
+ COUNT_POST+COUNT_VACUUM,// размер массива
&CoinIndexDesc, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, DeviceConfig.EnableCoinAcceptor), // указатель на переменную или адрес FRAM
(void*)&EnableCoinRange, // указатель на границы параметра
@@ -787,7 +879,7 @@ TDataDescStruct const PrintTimeoutAfterDesc = {
DATA_NO_INDEX, // признак индексного параметра (список строк)
NULL, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
- 10 // значение по умолчанию
+ 60 // значение по умолчанию
};
/*************************************
@@ -3219,6 +3311,9 @@ const TDataDescArrayStruct AllDataArray[] =
{&PrintModeDesc, "PrintModeDesc"},
{&PrintTimeoutAfterDesc, "PrintTimeoutAfterDesc"},
+ {&DisableFiscalErrorsDesc, "DisableFiscalErrorsDesc"},
+ {&EnableSignalDesc, "EnableSignalDesc"},
+ {&SignalPulseDesc, "SignalPulseDesc"},
{NULL, ""}
diff --git a/PROJECT/data/datadesc.h b/PROJECT/data/datadesc.h
index 9108e33..470505c 100644
--- a/PROJECT/data/datadesc.h
+++ b/PROJECT/data/datadesc.h
@@ -233,4 +233,9 @@ extern TDataDescStruct const TaxSystemDesc;
extern TDataDescStruct const CoinIndexDesc;
extern TDataDescStruct const CashIndexDesc;
extern CPU_INT32U CoinIndex;
+
+extern TDataDescStruct const SignalIndexDesc;
+extern TDataDescStruct const EnableSignalDesc;
+extern TDataDescStruct const SignalPulseDesc;
+
#endif //#ifndef _DATADESC_H_
diff --git a/PROJECT/data/fram_map.h b/PROJECT/data/fram_map.h
index d4583b8..b8b6c31 100644
--- a/PROJECT/data/fram_map.h
+++ b/PROJECT/data/fram_map.h
@@ -58,5 +58,8 @@ typedef struct
CPU_INT32U CommandV2;
CPU_INT32U TaxSystem;
+ CPU_INT32U enableSignalPrint[COUNT_POST + COUNT_VACUUM];
+ CPU_INT32U signal_pulse_len[COUNT_POST + COUNT_VACUUM];
+
}TFramMap;
diff --git a/PROJECT/menu/menudesc.c b/PROJECT/menu/menudesc.c
index 3c18af8..2c2b8ad 100644
--- a/PROJECT/menu/menudesc.c
+++ b/PROJECT/menu/menudesc.c
@@ -847,6 +847,7 @@ const CPU_INT08U str_DeviceMenu_1[] = "
const CPU_INT08U str_DeviceMenu_2[] = "Монетоприемники";
//const CPU_INT08U str_DeviceMenu_3[] = "Модем";
const CPU_INT08U str_DeviceMenu_4[] = "Купюроприемники";
+const CPU_INT08U str_DeviceMenu_5[] = "Сигнал печати";
const TMenuLine line_DeviceMenu_0 = {
MENU_LINE_STRING, // тип пункта меню
@@ -883,8 +884,47 @@ const TMenuLine line_DeviceMenu_3 = {
(void*)&ModemSetupPanel // панель для перехода
};*/
-const TMenuLineArray arr_DeviceMenuArray[] = {&line_DeviceMenu_0, &line_DeviceMenu_1, &line_DeviceMenu_2, &line_DeviceMenu_3, /*&line_DeviceMenu_4,*/ NULL};
-const TMenuPanel DeviceMenuPanel[] = {arr_DeviceMenuArray, NULL, 4, MENU_PANEL_STANDARD};
+const TMenuLine line_DeviceMenu_5 = {
+ MENU_LINE_GOTO_MENU, // тип пункта меню
+ 0, // доп. флаги
+ (void*)str_DeviceMenu_5, // указатель на текстовую строку или дескриптор
+ (void*)&SignalSetupPanel // панель для перехода
+};
+
+const TMenuLineArray arr_DeviceMenuArray[] = {&line_DeviceMenu_0, &line_DeviceMenu_1, &line_DeviceMenu_2, &line_DeviceMenu_3, &line_DeviceMenu_5,/*&line_DeviceMenu_4,*/ NULL};
+const TMenuPanel DeviceMenuPanel[] = {arr_DeviceMenuArray, NULL, 5, MENU_PANEL_STANDARD};
+
+/***********************************
+ МЕНЮ НАСТРОЙКА сигналов печати чеков
+***********************************/
+const TMenuLine line_SignalMenu_0 = {
+ MENU_LINE_SHOW_DESC, // тип пункта меню
+ MENU_FIXED_LINE|MENU_INDEX_LINE, // доп. флаги
+ (void*)&SignalIndexDesc, // указатель на текстовую строку или дескриптор
+ NULL // панель для перехода
+};
+
+const TMenuLine line_SignalMenu_1 = {
+ MENU_LINE_SHOW_DESC, // тип пункта меню
+ 0, // доп. флаги
+ (void*)&EnableSignalDesc, // указатель на текстовую строку или дескриптор
+ NULL // панель для перехода
+};
+
+const TMenuLine line_SignalMenu_2 = {
+ MENU_LINE_SHOW_DESC, // тип пункта меню
+ 0, // доп. флаги
+ (void*)&SignalPulseDesc, // указатель на текстовую строку или дескриптор
+ NULL // панель для перехода
+};
+
+void OnEnterSignalMenu(void)
+{
+ CoinIndex = 0;
+}
+
+const TMenuLineArray arr_SignalMenuArray[] = {&line_SignalMenu_0, &line_SignalMenu_1, &line_SignalMenu_2, NULL};
+const TMenuPanel SignalSetupPanel[] = {arr_SignalMenuArray, OnEnterSignalMenu, 3, MENU_PANEL_STANDARD};
/***********************************
@@ -984,8 +1024,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, 13, 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, 11, MENU_PANEL_STANDARD};
/***********************************
МЕНЮ НАСТРОЙКА МОНЕТОПРИЕМНИКОВ
@@ -1671,7 +1711,7 @@ void PrintEventJournalRecord(TEventRecord *record)
{
sprintf(str_EventData, "");
}
- else if (record->event == JOURNAL_EVENT_PRINT_BILL)
+ else if ((record->event >= JOURNAL_EVENT_PRINT_BILL_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_VACUUM2))
{
sprintf(str_EventData, " ");
}
diff --git a/PROJECT/menu/menudesc.h b/PROJECT/menu/menudesc.h
index 9c6b3bf..8d5e6c8 100644
--- a/PROJECT/menu/menudesc.h
+++ b/PROJECT/menu/menudesc.h
@@ -20,6 +20,7 @@ extern const TMenuPanel CommonCountersLongPanel[];
extern const TMenuPanel BillCountersPanel[];
extern const TMenuPanel ModemSetupPanel[];
extern const TMenuPanel CoinSetupPanel[];
+extern const TMenuPanel SignalSetupPanel[];
extern const TMenuPanel JournalIsReset[];
extern const TMenuPanel ClearJournalMenuPanel[];
extern const TMenuPanel StatIsReset[];
diff --git a/PROJECT/services/time.c b/PROJECT/services/time.c
index 6c086c1..7215443 100644
--- a/PROJECT/services/time.c
+++ b/PROJECT/services/time.c
@@ -13,7 +13,7 @@ void RTC_Isr (void)
CPU_INT32U ilr;
ilr = ILR & 0x7;
- if (ilr & 0x1) PostUserEvent(EVENT_SEC);
+ if (ilr & 0x1) PostUserEvent(EVENT_UPATE_RTC);
ILR = ilr;
}
@@ -51,7 +51,6 @@ void RTC_SetTime(TRTC_Data *rtc)
OS_EXIT_CRITICAL();
}
-
extern CPU_INT32U BSP_CPU_PclkFreq (CPU_INT08U pclk);
void InitRTC(void)
@@ -87,7 +86,7 @@ void InitRTC(void)
CISS = 0;
AMR = 0xff;
- CIIR = 0x1; // sec interrupt
+ CIIR_bit.IMSEC = 0x1; // sec interrupt
OS_EXIT_CRITICAL();
}
diff --git a/settings/sk-mlpc2368.dni b/settings/sk-mlpc2368.dni
index 362b3d7..485b643 100644
--- a/settings/sk-mlpc2368.dni
+++ b/settings/sk-mlpc2368.dni
@@ -14,7 +14,7 @@ Count=0
Enabled=0
ShowSource=1
[DebugChecksum]
-Checksum=-390368809
+Checksum=-1178438452
[Exceptions]
StopOnUncaught=_ 0
StopOnThrow=_ 0
diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt
index a299459..f52ca93 100644
--- a/settings/sk-mlpc2368.wsdt
+++ b/settings/sk-mlpc2368.wsdt
@@ -34,7 +34,7 @@
TabID-28963-15244Find in FilesFind-in-Files
- 0
+ 1
TabID-1122-24249
@@ -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.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
+ TextEditor$WS_DIR$\PROJECT\menu\menu.h04814241424TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\PROJECT\data\data.c032891469146TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\app\app_serv.c017849274927TextEditor$WS_DIR$\PROJECT\services\coin.c0196426542655TextEditor$WS_DIR$\PROJECT\services\fr.c04484484TextEditor$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.h04211541154TextEditor$WS_DIR$\PROJECT\app\app_serv.h02811001115TextEditor$WS_DIR$\PROJECT\app\journal.h04432053205TextEditor$WS_DIR$\PROJECT\app\journal.c04211441144TextEditor$WS_DIR$\PROJECT\services\time.c012625625TextEditor$WS_DIR$\OS\app\app.c02911311131TextEditor$WS_DIR$\PROJECT\menu\menu.c020660776077TextEditor$WS_DIR$\OS\bsp\iolpc2368.h04662143604143604TextEditor$WS_DIR$\OS\bsp\bsp.c014966786678TextEditor$WS_DIR$\PROJECT\data\datadesc.c07092888928889TextEditor$WS_DIR$\PROJECT\app\control.h004949TextEditor$WS_DIR$\PROJECT\data\datadesc.h04719751990TextEditor$WS_DIR$\PROJECT\menu\menudesc.c08633624636246TextEditor$WS_DIR$\PROJECT\services\coin.h0043430100000010000001
- iaridepm.enu1-2-2592253-2-2200200156250210305199219624606-2-23141282-2-212843161003125332282156250210305
+ iaridepm.enu1-2-2742253-2-2200200156250210305199219782334-2-21641282-2-212841661003125174553156250210305