сигналы печати

This commit is contained in:
dimoniche 2019-06-04 00:17:38 +03:00
parent 17e8233316
commit 08f1927b7a
12 changed files with 311 additions and 102 deletions

View File

@ -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);

View File

@ -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,

View File

@ -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)], " ");
}

View File

@ -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) // число событий

View File

@ -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, ""}

View File

@ -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_

View File

@ -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;

View File

@ -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, " ");
}

View File

@ -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[];

View File

@ -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();
}

View File

@ -14,7 +14,7 @@ Count=0
Enabled=0
ShowSource=1
[DebugChecksum]
Checksum=-390368809
Checksum=-1178438452
[Exceptions]
StopOnUncaught=_ 0
StopOnThrow=_ 0

View File

@ -34,7 +34,7 @@
</Tab>
<Tab><Identity>TabID-28963-15244</Identity><TabName>Find in Files</TabName><Factory>Find-in-Files</Factory><Session/></Tab></Tabs>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<SelectedTab>1</SelectedTab></Wnd2><Wnd3>
<Tabs>
<Tab>
<Identity>TabID-1122-24249</Identity>
@ -52,14 +52,14 @@
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menu.h</Filename><XPos>0</XPos><YPos>48</YPos><SelStart>1424</SelStart><SelEnd>1424</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\control.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>49</SelStart><SelEnd>49</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\journal.c</Filename><XPos>0</XPos><YPos>378</YPos><SelStart>10205</SelStart><SelEnd>10205</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>470</SelStart><SelEnd>470</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.c</Filename><XPos>0</XPos><YPos>2608</YPos><SelStart>122035</SelStart><SelEnd>122035</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menu.c</Filename><XPos>0</XPos><YPos>206</YPos><SelStart>6049</SelStart><SelEnd>6049</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\app\app.c</Filename><XPos>0</XPos><YPos>29</YPos><SelStart>1530</SelStart><SelEnd>1530</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\data.h</Filename><XPos>0</XPos><YPos>92</YPos><SelStart>2345</SelStart><SelEnd>2345</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\app\app_cfg.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>58</SelStart><SelEnd>58</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\data.c</Filename><XPos>0</XPos><YPos>328</YPos><SelStart>9146</SelStart><SelEnd>9146</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>257</SelStart><SelEnd>269</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.c</Filename><XPos>0</XPos><YPos>1809</YPos><SelStart>71012</SelStart><SelEnd>71012</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c</Filename><XPos>0</XPos><YPos>26</YPos><SelStart>1431</SelStart><SelEnd>1431</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.c</Filename><XPos>0</XPos><YPos>496</YPos><SelStart>15112</SelStart><SelEnd>15112</SelEnd></Tab><ActiveTab>13</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.c</Filename><XPos>0</XPos><YPos>370</YPos><SelStart>4087</SelStart><SelEnd>4087</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\fr.c</Filename><XPos>0</XPos><YPos>259</YPos><SelStart>8192</SelStart><SelEnd>8192</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\console.c</Filename><XPos>0</XPos><YPos>109</YPos><SelStart>3332</SelStart><SelEnd>3332</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\uc\cpu\cpu.h</Filename><XPos>0</XPos><YPos>85</YPos><SelStart>4578</SelStart><SelEnd>4589</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\uc\lib\lib_def.h</Filename><XPos>0</XPos><YPos>111</YPos><SelStart>5973</SelStart><SelEnd>5981</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\fram_map.h</Filename><XPos>0</XPos><YPos>38</YPos><SelStart>1011</SelStart><SelEnd>1011</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.h</Filename><XPos>0</XPos><YPos>28</YPos><SelStart>1277</SelStart><SelEnd>1304</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\journal.h</Filename><XPos>0</XPos><YPos>8</YPos><SelStart>1607</SelStart><SelEnd>1607</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menu.h</Filename><XPos>0</XPos><YPos>48</YPos><SelStart>1424</SelStart><SelEnd>1424</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\app\app_cfg.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>58</SelStart><SelEnd>58</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\data.c</Filename><XPos>0</XPos><YPos>328</YPos><SelStart>9146</SelStart><SelEnd>9146</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c</Filename><XPos>0</XPos><YPos>26</YPos><SelStart>1431</SelStart><SelEnd>1431</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.c</Filename><XPos>0</XPos><YPos>178</YPos><SelStart>4927</SelStart><SelEnd>4927</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.c</Filename><XPos>0</XPos><YPos>196</YPos><SelStart>4265</SelStart><SelEnd>4265</SelEnd></Tab><ActiveTab>5</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\fr.c</Filename><XPos>0</XPos><YPos>4</YPos><SelStart>484</SelStart><SelEnd>484</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\console.c</Filename><XPos>0</XPos><YPos>109</YPos><SelStart>3332</SelStart><SelEnd>3332</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\uc\cpu\cpu.h</Filename><XPos>0</XPos><YPos>85</YPos><SelStart>4578</SelStart><SelEnd>4589</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\uc\lib\lib_def.h</Filename><XPos>0</XPos><YPos>111</YPos><SelStart>5973</SelStart><SelEnd>5981</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\fram_map.h</Filename><XPos>0</XPos><YPos>42</YPos><SelStart>1154</SelStart><SelEnd>1154</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.h</Filename><XPos>0</XPos><YPos>28</YPos><SelStart>1100</SelStart><SelEnd>1115</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\journal.h</Filename><XPos>0</XPos><YPos>44</YPos><SelStart>3205</SelStart><SelEnd>3205</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\journal.c</Filename><XPos>0</XPos><YPos>42</YPos><SelStart>1144</SelStart><SelEnd>1144</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\time.c</Filename><XPos>0</XPos><YPos>12</YPos><SelStart>625</SelStart><SelEnd>625</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\app\app.c</Filename><XPos>0</XPos><YPos>29</YPos><SelStart>1131</SelStart><SelEnd>1131</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menu.c</Filename><XPos>0</XPos><YPos>206</YPos><SelStart>6077</SelStart><SelEnd>6077</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\bsp\iolpc2368.h</Filename><XPos>0</XPos><YPos>4662</YPos><SelStart>143604</SelStart><SelEnd>143604</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\bsp\bsp.c</Filename><XPos>0</XPos><YPos>149</YPos><SelStart>6678</SelStart><SelEnd>6678</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.c</Filename><XPos>0</XPos><YPos>709</YPos><SelStart>28889</SelStart><SelEnd>28889</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\control.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>49</SelStart><SelEnd>49</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.h</Filename><XPos>0</XPos><YPos>47</YPos><SelStart>1975</SelStart><SelEnd>1990</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.c</Filename><XPos>0</XPos><YPos>863</YPos><SelStart>36246</SelStart><SelEnd>36246</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>43</SelStart><SelEnd>43</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-04462d18><key>iaridepm.enu1</key></Toolbar-04462d18></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>592</Bottom><Right>253</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>156250</sizeHorzCX><sizeHorzCY>210305</sizeHorzCY><sizeVertCX>199219</sizeVertCX><sizeVertCY>624606</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>314</Bottom><Right>1282</Right><x>-2</x><y>-2</y><xscreen>1284</xscreen><yscreen>316</yscreen><sizeHorzCX>1003125</sizeHorzCX><sizeHorzCY>332282</sizeHorzCY><sizeVertCX>156250</sizeVertCX><sizeVertCY>210305</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
<Top><Row0><Sizes><Toolbar-04462d18><key>iaridepm.enu1</key></Toolbar-04462d18></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>742</Bottom><Right>253</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>156250</sizeHorzCX><sizeHorzCY>210305</sizeHorzCY><sizeVertCX>199219</sizeVertCX><sizeVertCY>782334</sizeVertCY></Rect></Wnd3></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>164</Bottom><Right>1282</Right><x>-2</x><y>-2</y><xscreen>1284</xscreen><yscreen>166</yscreen><sizeHorzCX>1003125</sizeHorzCX><sizeHorzCY>174553</sizeHorzCY><sizeVertCX>156250</sizeVertCX><sizeVertCY>210305</sizeVertCY></Rect></Wnd2></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>