void ReadTopBNew(void) { // адрес обрабатываемого блока if (!UseBounds()) { dwBaseCurr = InBuff(1); dwBaseCurr <<= 12; dwBaseCurr += InBuff(2) << 4; ResetLimitsAux(ibDig); } else { if (mpboStartCan[ibDig] == false) { dwBaseCurr = InBuff(1); dwBaseCurr <<= 12; dwBaseCurr += InBuff(2) << 4; if (boShowMessages == true) sprintf(szLo," начало %05lX * ",dwBaseCurr); ResetLimitsAux(ibDig); } else { dwBaseCurr = mpcdwStartAbs32Can[ibDig]; if (boShowMessages == true) sprintf(szLo," начало %05lX ",dwBaseCurr); iwMajor = dwBaseCurr % 0x10000; AddDigRecord(EVE_PREVIOUS_TOP); } if (boShowMessages == true) DelayMsg(); } // индекс по получасовому массиву iwDigHou = 0; // счЄтчик получасов в выключенном состо¤нии iwMajor = 0; }
void ShowNoTariffs(uchar ibMonth) { ShowHi(szNoTariffs); Clear(); sprintf(szLo,"для месяца: %-2u ",ibMonth+1); DelayMsg(); }
void InitHeaderQ(void) { if (!UseBounds()) wBaseCurr = 0; else { wBaseCurr = mpcwStartRelCan[ibDig]; Clear(); sprintf(szLo+1,"начало %04u:%02u",wBaseCurr,(uchar)(wBaseCurr/48 + 1)); DelayMsg(); } tiDigPrev = tiCurr; }
void InitHeaderS(void) { if (!UseBounds()) wBaseCurr = 0; else { wBaseCurr = (mpcwStartRelCan[ibDig] / 6) * 6; Clear(); sprintf(szLo+1,"начало %04u:%02u",wBaseCurr,(uchar)(wBaseCurr/48 + 1)); if (boShowMessages == true) DelayMsg(); } tiDigPrev = tiCurr; uchar i = tiDigPrev.bHour*2 + tiDigPrev.bMinute/30; i = (i / 4) * 4; tiDigPrev.bHour = i / 2; tiDigPrev.bMinute = (i % 2)*30; }
void InitHeaderU_Plc(void) { if (!UseBounds()) wBaseCurr = 0; // счетчик получасов else { wBaseCurr = (mpcwStartRelCan[ibDig] / bPlcUSize) * bPlcUSize; sprintf(szLo," начало %04u:%02u ",wBaseCurr,(uchar)(wBaseCurr/48 + 1)); DelayMsg(); } tiDigPrev = tiCurr; uchar i = tiDigPrev.bHour*2 + tiDigPrev.bMinute/30; i = (i / bPlcUSize) * bPlcUSize; tiDigPrev.bHour = i / 2; tiDigPrev.bMinute = (i % 2)*30; }
// принудительный разрыв connect при действии/бездействии клавиатуры void KeyBreakConnect(void) { if (fConnect == 1) { ShowHi(szPause); ShowLo(szModemStop); fSlide = 0; DelayMsg(); } else Stop(); enKeyboard = KBD_BEGIN; wProgram = 0; fKeyOn = 1; MakePause(DEV_MODEM_STOP); if (diCurr.ibPhone != 0) AddModRecord(EVE_MODEM_KEYBREAK); }
void Automatic(uchar ibMin, uchar ibMax) { uchar i; enKeyboard = KBD_POSTENTER; ShowHi(szAutomatic); Clear(); DelayInf(); for (ibPort=0; ibPort<bPORTS; ibPort++) { ShowPortDelayLo(ibPort); DelayInf(); fKey = 0; } Clear(); InitConnectKey(); ibX = 0; for (i=ibMin; i<ibMax; i++) { if (GetDigitalDevice(i) == 0) continue; uchar bRes = 0; LoadCurrDigital(i); ibPort = diCurr.ibPort; if (GetDigitalDevice(i) != 0) { if (StreamPortCan(GetDigitalPort(i),i) == 0) { bRes = 0xEE; break; } } ShowCanalNumber(i); ShowProgress(12,(ulong)100*i/(bCANALS-1)); DelayInf(); if (LoadConnect(i) == 0) break; Clear(); if (mpboEnblCan[i] == false) { ShowLo(szBlocked); DelayMsg(); } else switch (diCurr.bDevice) { #ifndef SKIP_A case 15: case 1: if (AutomaticA() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_B case 12: if (AutomaticJ() != 1) bRes = 0xEE; break; case 8: case 2: if (AutomaticB() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_C case 3: if (AutomaticC() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_D case 4: if (AutomaticD() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_E case 7: case 5: if (AutomaticE() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_F case 6: if (AutomaticF() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_G case 9: if (AutomaticG() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_H case 10: if (AutomaticH() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_I case 11: if (AutomaticI() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_K case 14: case 13: if (AutomaticK() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_L case 17: case 16: if (AutomaticK() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_M case 18: if (AutomaticM() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_N case 19: if (AutomaticN() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_O case 20: if (AutomaticO() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_P case 21: if (AutomaticP() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_Q case 22: if (AutomaticK() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_R case 23: if (AutomaticR() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_S case 24: if (AutomaticS() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_T case 25: if (AutomaticT() != 1) bRes = 0xEE; break; #endif #ifndef SKIP_V case 27: if (AutomaticV() != 1) bRes = 0xEE; break; #endif } SaveConnect(); if (bRes == 0xEE) { ibX++; Error(); Beep(); DelayMsg(); } if (fKey == true) bRes = 0xFF; fKey = 0; if (bRes == 0xFF) break; } ShowHi(szAutomatic); if (ibX != 0) { Clear(); sprintf(szLo+3, "ошибок: %-2u", ibX); LongBeep(); DelayMsg(); } else OK(); DelayMsg(); KeyBreakConnect(); SaveFactors(); }
void key_Start(void) { if (enKeyboard == KBD_ENTER) { enKeyboard = KBD_BEGIN; ShowHi(szStart); Clear(); if (boSetTime == false) { NeedProgram(bSET_CURRTIME); return; } else if (boSetDate == false) { NeedProgram(bSET_CURRDATE); return; } else if (boSetGroups == false) { NeedProgram(bSET_GROUPS); return; } else if (boSetPassword == false) { NeedProgram(bSET_PASSWORD); return; } if (TestTariffs() == 0) return; if (ValidTimeDateRTC(*GetCurrTimeDate()) == false) { ShowHi(szAlarm); ShowLo(szBadRTC); LongBeep(); DelayMsg(); return; } if (TestDigitals() == 0) return; // TODO key_Start // рассчитываем массивы индексов тарифов для каждого получаса текущих суток (для мощности и энергии) MakeAllCurrTariffs(); StartFactors(); StartRealtime(); StartImpulses(); // устанавливаем признаки используемых каналов и групп MakeUsedNodes(); StartDefects(); tiStart = *GetCurrTimeDate(); SaveCache(&chStart); Work(); OK(); Beep(); SetLabelGlobal(); enGlobal = GLB_WORK; AddSysRecord(EVE_START); // if (boDTREnable == true) DTROff_All(); } else Beep(); }
bool ResetFlash(void) { uint i; ShowHi(szFlashErase); wPage = 0; ibSoftDay = 0; ibSoftMon = 0; // TODO uint m; for (m=0; m<bMINUTES; m++) { if (FreeImpMnt(m) == false) return false; ShowFlashErase(); } uint wPageOut; for (wPageOut=IMPHOUCAN; wPageOut<(IMPHOUCAN+IMPHOUCAN_PAGES); wPageOut++) { if (SafePageErase(wPageOut) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } memset(&mpimDayCan, 0, sizeof(mpimDayCan)); for (i=0; i<bDAYS; i++) { if (SaveImpDay(0,i,ibSoftDay) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } memset(&mpimMonCan, 0, sizeof(mpimMonCan)); for (i=0; i<bMONTHS; i++) { if (SaveImpMon(0,i,ibSoftMon) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } memset(&mppoDayGrp, 0, sizeof(mppoDayGrp)); for (i=0; i<bDAYS; i++) { if (SavePowDay(0,i,ibSoftDay) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } memset(&mppoMonGrp, 0, sizeof(mppoMonGrp)); for (i=0; i<bMONTHS; i++) { if (SavePowMon(0,i,ibSoftMon) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } memset(&mpdbCntMonCan, 0, sizeof(mpdbCntMonCan)); for (i=0; i<bMONTHS; i++) { if (SaveCntMon(0,i,ibSoftMon) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } for (wPageOut=PARAMS_VALUES; wPageOut<(PARAMS_VALUES+PARAMS_PAGES*wTIMES); wPageOut++) { if (SafePageErase(wPageOut) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } for (wPageOut=KEY_RECORD; wPageOut<(KEY_RECORD+bRECORD_PAGES*6+wRECORD2_PAGES*1); wPageOut++) { if (SafePageErase(wPageOut) == false) return false; if (GetFlashStatus() != 0) return false; ShowFlashErase(); } if (CleanImpHouBuff() == false) return false; if (CleanImpDayBuff() == false) return false; if (CleanImpMonBuff() == false) return false; if (CleanImpAbsBuff() == false) return false; if (CleanPowDayBuff() == false) return false; if (CleanPowMonBuff() == false) return false; if (CleanCntMonBuff() == false) return false; if (ClearDiagram() == false) return false; ShowHi(szFlashRead); wPage = 0; bool f = true; uint wPageIn; for (wPageIn=FLASH_BEGIN; wPageIn<FLASH_END; wPageIn++) { if (SafePageRead(wPageIn) == false) return false; if (GetFlashChecksum() == 0) { SaveDisplay(); ShowHi(szErrorCrc); Clear(); sprintf(szLo+1,"страница: %u",wPageIn); Beep(); DelayMsg(); LoadDisplay(); f = false; } ShowFlashRead(); } return f; }