Версия 3.48

Нужна небольшая доработка для прошивки solarium_3_45.hex:
на платах, которые давно в использовании, иногда выгорает нога контроллера MK_P9.
P0.23	MK_P9	IMPULSE OUTPUT (импульсный выход монетоприемника)
И надо в программе MK_P9 заменить на
P0.25	MK_P7
А мы на плате замкнем эти 2 ноги, одна из которых итак не работает.
This commit is contained in:
Dmitriy 2025-08-19 22:25:35 +03:00
parent 067e029937
commit 83c3ed98fa
6 changed files with 747 additions and 690 deletions

Binary file not shown.

View File

@ -85,20 +85,27 @@ void UserAppTask(void *p_arg)
static CPU_INT32U time_last_insert_coin = 0;
{
CPU_INT32U m=0;
GetData(&AcceptedMoneyDesc, &m, 0, DATA_FLAG_SYSTEM_INDEX);
if (m)
{
EnabledChannelsNum = 0;
for (CPU_INT08U i=0; i<CHANNELS_NUM; i++)
{
CPU_INT32U en = 0;
GetData(&EnableChannelDesc, &en, i, DATA_FLAG_DIRECT_INDEX);
if (en) {EnabledChannelsNum++;}
}
UserMenuState = USER_STATE_ACCEPT_MONEY;
EnabledChannelsNum = 0;
for (CPU_INT08U i=0; i<CHANNELS_NUM; i++)
{
CPU_INT32U en = 0;
GetData(&EnableChannelDesc, &en, i, DATA_FLAG_DIRECT_INDEX);
if (en) {EnabledChannelsNum++;}
}
}
if(EnabledChannelsNum == 1)
{
UserMenuState = USER_STATE_ACCEPT_MONEY;
CoinEnable();
}
}
{
CPU_INT32U m=0;
GetData(&AcceptedMoneyDesc, &m, 0, DATA_FLAG_SYSTEM_INDEX);
if (m)
{
UserMenuState = USER_STATE_ACCEPT_MONEY;
}
}
incassation = 0;
@ -400,8 +407,19 @@ void UserAppTask(void *p_arg)
case EVENT_KEY_STOP:
if ((GetMode() != MODE_WORK) || (incassation)) break;
if (TstCriticalErrors()) {UserPrintErrorMenu(); RefreshMenu(); break;}
UserMenuState = USER_STATE_FIRST_PAGE;
UserPrintFirstMenu(RecentChannel);
if ((EnabledChannelsNum == 1) && (!IsChannelOn(RecentChannel)))
{
UserMenuState = USER_STATE_ACCEPT_MONEY;
UserPrintMoneyMenu();
CoinEnable();
}
else
{
UserMenuState = USER_STATE_FIRST_PAGE;
UserPrintFirstMenu(RecentChannel);
}
RefreshMenu();
if (IsValidatorConnected()) CC_CmdBillType(0x000000, 0x000000, ADDR_FL);
break;
@ -430,12 +448,12 @@ void UserAppTask(void *p_arg)
UserPrintThanksMenu();
RefreshMenu();
UserMenuState = USER_STATE_SHOW_THANKS;
ThanksCtr = 3;
}
else
{
UserMenuState = USER_STATE_FIRST_PAGE;
}
ThanksCtr = 3;
LED_off();
}
break;
@ -521,6 +539,8 @@ void UserAppTask(void *p_arg)
break;
}
FPost();
if (EnabledChannelsNum == 1) break;
UserMenuState = USER_STATE_ACCEPT_MONEY;
UserPrintMoneyMenu();
RefreshMenu();
@ -612,26 +632,21 @@ void UserAppTask(void *p_arg)
UserPrintThanksMenu();
RefreshMenu();
UserMenuState = USER_STATE_SHOW_THANKS;
ThanksCtr = 5;
}
else
{
UserMenuState = USER_STATE_FIRST_PAGE;
}
ThanksCtr = 5;
}
}
else
{ // äåíåã íåäîñòàòî÷íî äëÿ ðàáîòû
}
break;
}
break;
}
}
else
@ -768,6 +783,41 @@ void UserPrintMoneyMenu(void)
char buf[32];
CPU_INT32U accmoney;
if (EnabledChannelsNum == 1)
{
CPU_INT32U price=1, pricetime=0, time=0;
GetRecentChannelPrice(RecentChannel, &price, &pricetime);
sprintf(buf, "ÖÅÍÀ %dðóá./%dìèí.", price, pricetime);
PrintUserMenuStr(buf, 0);
accmoney = GetAcceptedMoney() + GetAcceptedBankMoney();
sprintf(buf, "ÏÐÈÍßÒÎ %d ðóá.", accmoney);
PrintUserMenuStr(buf, 1);
time = (pricetime*accmoney*60)/price;
sprintf(buf, "ÎÏËÀ×ÅÍÎ %d:%02d", time/60, time%60);
PrintUserMenuStr(buf, 2);
CPU_INT32U mintime=0, maxtime=0;
GetData(&MinWorkTimeDesc, &mintime, RecentChannel, DATA_FLAG_DIRECT_INDEX);
GetData(&MaxWorkTimeDesc, &maxtime, RecentChannel, DATA_FLAG_DIRECT_INDEX);
if (time >= mintime*60)
{
LED_on();
sprintf(buf, "ÍÀÆÌÈÒÅ CTAPT");
}
else
{
LED_off();
sprintf(buf, "ÂÍÅÑÈÒÅ ÄÅÍbÃÈ");
}
PrintUserMenuStr(buf, 3);
return;
}
sprintf(buf, "Âíåñèòå äåíüãè");
PrintUserMenuStr(buf, 0);
accmoney = GetAcceptedMoney() + GetAcceptedBankMoney();
@ -1024,12 +1074,17 @@ void WorkServer(void)
{ // çàêîí÷èëè ïàóçó
ChannelsState[i] = CHANNEL_STATE_EMPTY;
ChannelsPayedTime[i] = 0;
if (EnabledChannelsNum == 1)
{
UserMenuState = USER_STATE_ACCEPT_MONEY;
UserPrintMoneyMenu();
CoinEnable();
}
}
break;
}
}
}

View File

@ -1,7 +1,7 @@
#ifndef _VERSION_H_
#define _VERSION_H_
#define DEVICE_FW_VERSION "03.45"
#define DEVICE_FW_VERSION "03.48"
#endif // #ifndef _VERSION_H_

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -650,7 +650,7 @@
</option>
<option>
<name>OOCOutputFile</name>
<state>solarium_3_45.hex</state>
<state>solarium_3_48.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>