void NewLimits(void) { LoadCurrDigital(ibDig); uchar c; for (c=0; c<bCANALS; c++) { LoadPrevDigital(c); if (CompareCurrPrevLines(ibDig, c) == true) { mpcwStartRelCan[c] = 0; mpcwStartAbs16Can[c] = 0; mpcdwStartAbs32Can[c] = 0; mpboStartCan[c] = false; if (UseBounds() && IsLimitsAux(GetDigitalDevice(c))) { mpcwStopCan[c] = 4 + mpcwStopAuxCan[c]; if (mpcwStopCan[c] > wHOURS-1) mpcwStopCan[c] = wHOURS-1; } else { mpcwStopCan[c] = 4; } } } SaveCache(&chStartRelCan); SaveCache(&chStartAbs16Can); SaveCache(&chStartAbs32Can); SaveCache(&chStartCan); SaveCache(&chStopCan); }
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 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 NextHouLimitsAux(void) { if (UseBounds()) { uchar c; for (c=0; c<bCANALS; c++) { if (IsLimitsAux(GetDigitalDevice(c))) { mpcwStopAuxCan[c]++; } } SaveCache(&chStopAuxCan); } }
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; }