static bool ReadDataU_Plc_Inner(uchar i) { sprintf(szLo," %02u %02u.%02u.%02u", tiDig.bHour, tiDig.bDay,tiDig.bMonth,tiDig.bYear); if (SearchDefHouIndex(tiDig) == 0) return(1); ShowProgressDigHou(); MakeDataU(i); MakeSpecial(tiDig); return(MakeStopHou(0)); }
void MakeDataQ(uchar ibHou) { ShowProgressDigHou(); double dbPulse = mpdbPulseHou[ibDig]; uchar i; for (i=0; i<MAX_LINE_Q; i++) { double db = mpdbBuffCanHou[i][ibHou]; mpdbEngFracDigCan[ibDig][i] += db; uint w = (uint)(mpdbEngFracDigCan[ibDig][i]*dbPulse); mpwChannels[i] = w; mpdbEngFracDigCan[ibDig][i] -= (double)w/dbPulse; } wBaseCurr++; }
static bool ReadDataS(uchar i) { sprintf(szLo," %02u %02u.%02u.%02u", tiDig.bHour, tiDig.bDay,tiDig.bMonth,tiDig.bYear); if (SearchDefHouIndex(tiDig) == 0) return(1); ShowProgressDigHou(); InitPop(9+i*3); ulong dw = PopChar(); dw += PopChar()*0x100; dw += PopChar()*0x10000; if (dw != 0xFFFFFF) { double dbPulse = mpdbPulseHou[ibDig]; double db = (double)dw/wDividerS; mpdbEngFrac[ibDig] += db; uint w; if ((ulong)(mpdbEngFrac[ibDig]*dbPulse) < 0xFFFF) { w = (uint)(mpdbEngFrac[ibDig]*dbPulse); } else { w = 0xFFFF; mpcwOverflowHhr[ibDig]++; } mpwChannels[0] = w; mpdbEngFrac[ibDig] -= (double)w/dbPulse; MakeSpecial(tiDig); return(MakeStopHou(0)); } else { szLo[15] = '*'; return(MakeStopHou(0)); } }
bool ReadHeaderBNew(uchar ibBlock, bool fDelay) { HideCurrTime(1); InitPop((uint)(1+(16-ibBlock)*15)); PopChar(); tiDig.bHour = FromBCD(PopChar()); // врем¤/дата часового блока tiDig.bMinute = FromBCD(PopChar()); tiDig.bDay = FromBCD(PopChar()); tiDig.bMonth = FromBCD(PopChar()); tiDig.bYear = FromBCD(PopChar()); if ((tiDig.bHour == 0) && // обрабатываем пустой блок (tiDig.bMinute == 0) && (tiDig.bDay == 0) && (tiDig.bMonth == 0) && (tiDig.bYear == 0)) { if (++iwMajor > GetMaxShutdown()) return(0); sprintf(szLo," выключено: %-4u ",iwMajor); if (fDelay == 1) DelayOff(); if (iwDigHou != 0) { iwDigHou = (wHOURS+iwDigHou-1)%wHOURS; ShowProgressDigHou(); return(MakeStopHou(0)); } else return(1); } if ((tiDig.bDay == tiSummer.bDay) && (tiDig.bMonth == tiSummer.bMonth)) { if ((tiDig.bHour == 3) && (tiDig.bMinute == 0)) { tiDig.bHour = 2; tiDig.bMinute = 0; } } sprintf(szLo," %02u %02u.%02u.%02u", tiDig.bHour, tiDig.bDay,tiDig.bMonth,tiDig.bYear); if ((tiDig.bMinute % 30) != 0) // обрабатываем неполный получасовой блок { tiDig.bMinute = (tiDig.bMinute / 30)*30; if (SearchDefHouIndex(tiDig) == 0) { szLo[4] = '?'; if (fDelay == 1) DelayOff(); return(1); } iwDigHou = (wHOURS+iwDigHou+1)%wHOURS; } else if (SearchDefHouIndex(tiDig) == 0) { szLo[4] = '?'; if (fDelay == 1) DelayOff(); return(1); } iwMajor = 0; // обнул¤ем счЄтчик после получени¤ правильных данных iwDigHou = (wHOURS+iwDigHou-1)%wHOURS; // врем¤ записи должно соответсвовать началу получасового блока ulong dw = DateToHouIndex(tiCurr); dw -= (wHOURS + iwHardHou - iwDigHou) % wHOURS; time ti = HouIndexToDate(dw); ShowProgressDigHou(); if (fDelay == 1) DelayOff(); PopChar(); uchar i; for (i=0; i<4; i++) { uint w = PopChar(); w += PopChar()*0x100; if (w == 0xFFFF) w = 0; mpwChannels[i] = w; } MakeSpecial(ti); return(MakeStopHou(0)); }