DWORD WINAPI LightThread (LPVOID *data) { int i; // only print on the first thread threadinfo_t *threadinfo = (threadinfo_t *) data; if (NewLine) fprintf (logfile, "\n"); else logprintf ("\n"); if (SimpPercent) printf ("\n"); ShowPercent (threadinfo->threadnum, "Light", 0, 0); // reduce thread locking overhead by partitioning the BSP faces for (i = threadinfo->firstface; i < threadinfo->lastface; i++) { ShowPercent (threadinfo->threadnum, NULL, (i - threadinfo->firstface), (threadinfo->lastface - threadinfo->firstface)); LightFace (i, faceoffset[i]); } ShowPercent (threadinfo->threadnum, NULL, 100, 100); LOCK; finished++; UNLOCK; return 0; }
// чтение вснй накопленной энергии для счётчиков ABB Альфа bool ReadAllEnergyD(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryEnergyD(); if (ExtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(75); ibMinor = 0; ReadEnergyD(); while (ibMinor < GetEnergyBlocksD()) { for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryContinueD(); if (ExtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(76 + ibMinor); ReadEnergyD(); } for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryStopD(); if (ExtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(100); ReadQuadrantsD(); return(1); }
// открытие канала для сумматоров СЭМ-2 bool OpenDeviceE(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { if (diCurr.bAddress <= 16) { QueryBreakE(); InitPush(0); PushChar(0x1B); PushChar('0'+diCurr.bAddress); Query(1+1, 2, 1); if (EscInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } else return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); return(1); }
double2 ReadTrans31_Full(void) { if (QueryOpen31_Full(25) == false) return GetDouble2Error(); uchar r; for (r=0; r<MaxRepeats(); r++) { DelayOff(); QueryTrans31(); if (Input31() == SER_GOODCHECK) break; if (fKey == true) return GetDouble2Error(); } if (r == MaxRepeats()) return GetDouble2Error(); ShowPercent(50); InitPop(3+4+4+1); double dbTransU = PopDouble31(); double dbTransI = PopDouble31(); return GetDouble2(dbTransU*dbTransI, true); }
bool AutomaticT(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryVersionT(); if (TxtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ReadVersionT(); Delay(1000); Clear(); dbKtrans = 1; // K трансформации reBuffA = 5000; // K преобразования ShowPercent(100); SetCanalsAll(); return(1); }
bool AutomaticP(void) { Clear(); if (OpenDeviceP() == 0) return(0); uchar i; for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryTransP(); if (ElsInput(0) == SER_GOODCHECK) break; } if (i == bMINORREPEATS) return(0); ShowPercent(50); ReadTransP(); // K трансформации QueryCloseP(); dbKpulse = 5000; // K преобразования SetCanalsAll(); return(1); }
// чтение коэффициентов для счётчика Меркурий-230 bool ReadKoeffDeviceB_Special(void) { uchar i; if (QueryOpenB_Full(25) == 0) return(0); for (i=0; i<bMINORREPEATS; i++) { InitPush(0); PushChar(diCurr.bAddress); PushChar(8); PushChar(2); // чтение коэффициентов DelayOff(); QueryIO(1+4+2, 2+1+2); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); // K трансформации dbKtrans = (InBuff(1)*0x100 + InBuff(2)) * (InBuff(3)*0x100 + InBuff(4)); // K преобразования dbKpulse = 2000; return(1); }
void ShowFlashRead(void) { ResetWatchdog(); ShowPercent((ulong)100*(++wPage)/(FLASH_END-FLASH_BEGIN+1)); #ifdef NO_DISPLAY RunLED_Reset(); #endif }
void ShowFlashErase(void) { ResetWatchdog(); ShowPercent((ulong)100*(++wPage)/(IMPHOUCAN_PAGES + bMINUTES + bDAYS*2 + bMONTHS*3 + PARAMS_PAGES*wTIMES + bRECORD_PAGES*6 + wRECORD2_PAGES*1)); #ifdef NO_DISPLAY RunLED_Reset(); #endif }
bool AutomaticH(void) { if (ReadKoeffDeviceH() == 0) return(0); ShowPercent(100); SetCanalsAll(); // сохранение К преобразования и К трасформации return(1); }
// открытие канала для счётчиков Elster A1140 bool OpenDeviceP(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryOpenP(); if (ElsInput(1) == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(20); for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryModeP(); if (ElsInput(0) == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(30); for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryPasswordP(); if (ElsInput(2) == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(40); return(1); }
bool AutomaticN(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { InitPush(0); PushChar(0); PushChar(diCurr.bAddress); PushChar(8); PushChar(0); PushChar(0); PushChar(0); PushChar(0); PushChar(0); PushChar(0); PushChar(0); PushChar(0); QueryIO(5+8, 5+8); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); sprintf(szLo+1,"версия:"); szLo[ 9] = InBuff(3); szLo[10] = InBuff(4); szLo[11] = InBuff(5); szLo[12] = InBuff(6); szLo[13] = InBuff(7); DelayInf(); Clear(); for (i=0; i<bMINORREPEATS; i++) { QueryEnergyAbsN(); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); ReadEnergyN(); mpdwBase[ibDig] = mpdwChannelsA[0]; return(1); }
bool Automatic31(void) { double2 db2 = ReadTrans31_Full(); if (db2.fValid == false) return false; ShowPercent(100); SetupFactors(GetFactors(db2.dbValue, 10000)); return true; }
bool ReadKoeffDeviceG(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryOpenG(); if (CodInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); if (ReadOpenG() == 0) return(0); for (i=0; i<bMINORREPEATS; i++) { DelayOff(); InitPushCod(); PushChar(0x7E); PushChar(0x03); PushChar(0x06); PushCharCod(0x03); PushCharCod(0x00); PushCharCod(0x00); CodQueryIO(3+25+1, 3+3+1); if (CodInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); InitPop(3); for (i=0; i<9; i++) PopChar(); if (ExtVersionCod()) PopRealExt_G(); else PopRealBCD_G(); dbKtrans = reBuffA; if (ExtVersionCod()) PopRealExt_G(); else PopRealBCD_G(); dbKtrans *= reBuffA; // K трансформации reBuffA = 10000; // K преобразования return(1); }
// задание параметров для сумматора СЭМ+2 bool AutomaticF(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryBreakF(); QueryKoeffF(); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); ReadKoeffF(); for (i=0; i<bMINORREPEATS; i++) { QueryRealExtendedF(bEXT_GET_ESC_S_VALUE); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(100); ReadRealExtendedF(); SetCanReal(mpreCount,ibDig); return(1); }
// открытие канала для счётчиков ABB Альфа bool OpenDeviceD(void) { uchar i; for (i=0; i<bMAJORREPEATS; i++) { ShowPercent(i); DelayOff(); QueryOpenD(); if (ExtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMAJORREPEATS) return(0); ShowPercent(48); for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryPasswordD(); if (ExtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(49); if (InBuff(2) != 0) return(0); ShowPercent(50); return(1); }
// задание параметров для счётчиков ABB Альфа bool AutomaticD(void) { uchar i; if (OpenDeviceD() == 0) return(0); for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryConfigD(); if (ExtInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(51); if (InBuff(2) != 0) return(0); ShowPercent(52); ReadConfigD(); if (ReadAllEnergyD() == 0) return(0); QueryCloseD(0); MakeEnergyD(); SetCanReal(mpreCount,ibDig); return(1); }
time2 QueryTime31_Full(uchar bPercent) { uchar r; for (r=0; r<MaxRepeats(); r++) { DelayOff(); QueryTime31(); if (Input31() == SER_GOODCHECK) break; if (fKey == true) return GetTime2Error(); } if (r == MaxRepeats()) return GetTime2Error(); ShowPercent(bPercent); return GetTime2(ReadTime31(), true); }
time2 QueryTimeS_Full(uchar bPercent) { uchar i; for (i=0; i<MaxRepeats(); i++) { DelayOff(); QueryTimeS(); if (InputS() == SER_GOODCHECK) break; if (fKey == true) return GetTime2Error(); } if (i == MaxRepeats()) return GetTime2Error(); ShowPercent(bPercent); return GetTime2(ReadTimeS(), true); }
ulong2 ReadSerialCanC(uchar ibCan) { uchar r; for (r=0; r<MaxRepeats(); r++) { DelayOff(); QueryOpenC(); if (RevInput() == SER_GOODCHECK) break; if (fKey == true) return GetLong2Error(); } if (r == MaxRepeats()) return GetLong2Error(); ShowPercent(25); return QuerySerialC_Full(ibCan); }
bool QueryEventA_Full(uchar ibEvent, uchar j, uchar bPercent) { uchar i; for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryEventA(ibEvent,j); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(bPercent+j); return(1); }
bool QueryConfigS_Full(uchar bPercent) { uchar i; for (i=0; i<MaxRepeats(); i++) { DelayOff(); QueryConfigS(); if (InputS() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == MaxRepeats()) return(0); ShowPercent(bPercent); ReadConfigS(); return(1); }
bool QueryEngMonS_Full(uchar bTime, uchar bPercent) { uchar i; for (i=0; i<MaxRepeats(); i++) { DelayOff(); QueryEngMonS(bTime); if (InputS() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == MaxRepeats()) return(0); ShowPercent(bPercent); ReadEnergyS(); return(1); }
// задание параметров для счётчиков СС-301 bool AutomaticC(void) { if (ReadKoeffDeviceC() == 0) return(0); SetCanalsAll(); // сохранение К преобразования и К трасформации DelayOff(); QueryEnergyAbsC(); // чтение накопленной энергии if (RevInput() != SER_GOODCHECK) return(0); ShowPercent(100); /* ReadEnergyC(); SetEnergyAll(); // сохранение показаний счётчиков */ return(1); }
bool ReadCntMonCanF_Buff(uchar ibMon, uchar ibCan) { Clear(); LoadCurrDigital(ibCan); ibPort = diCurr.ibPort; uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryBreakF(); InitPushPck(); PushChar(diCurr.bAddress); PushChar(0); PushChar((5+10+2) % 0x100); PushChar((5+10+2) / 0x100); PushChar(0xFD); PushChar(bEXT_GETEXTENDED40); PushChar(ibMon); PushChar(0xFF); PushChar(0xFF); PushChar(0xFF); PushChar(0xFF); PushChar(0xFF); PushChar(0xFF); PushChar(0xFF); PushChar(0xFF); PckQueryIO(bHEADER+(1+2+2+8+6)*bCANALS+2, 5+10+2); if (Input() == SER_GOODCHECK) break; if (fKey == true) return false; } if (i == bMINORREPEATS) return false; ShowPercent(100); return true; }
bool ReadCntMonCanF_Curr(uchar ibMon, uchar ibCan) { Clear(); LoadCurrDigital(ibCan); ibPort = diCurr.ibPort; uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryBreakF(); InitPushPck(); PushChar(diCurr.bAddress); PushChar(0); PushChar((5+3+2) % 0x100); PushChar((5+3+2) / 0x100); PushChar(0xFD); PushChar(bEXT_GETEXTENDED42); PushChar(ibMon); PushChar(ibCan); PckQueryIO(bHEADER+(1+2+2+8+6)+2, 5+3+2); if (Input() == SER_GOODCHECK) break; if (fKey == true) return false; } if (i == bMINORREPEATS) return false; ShowPercent(100); InitPop(bHEADER); bStatus4 = PopChar(); PopChar(); PopChar(); PopChar(); PopChar(); dbValue4 = PopDouble(); Pop(&tiUpdate4, sizeof(time)); return true; }
bool QueryEngAbs31_Full(uchar bPercent) { uchar r; for (r=0; r<MaxRepeats(); r++) { DelayOff(); QueryEngAbs31(); if (Input31() == SER_GOODCHECK) break; if (fKey == true) return false; } if (r == MaxRepeats()) return false; ShowPercent(bPercent); ReadEng31(); return true; }
bool ReadKoeffDeviceP(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryRegisterP(); if (ElsInput(0) != SER_GOODCHECK) continue; else break; } if (i == bMINORREPEATS) return(0); ShowPercent(60); ReadRegisterP(); return(1); }
bool QueryEnergyAbsC_Full2(uchar bPercent) { uchar i; for (i=0; i<bMINORREPEATS; i++) { DelayOff(); QueryEnergyAbsC(); if (RevInput() == SER_GOODCHECK) break; if (fKey == true) return false; if (QueryIdC_Full() == 0) return false; } if (i == bMINORREPEATS) return false; ShowPercent(bPercent); ReadEnergyC(); return(1); }
bool QueryOpen31_Full(uchar bPercent) { Clear(); uchar r; for (r=0; r<MaxRepeats(); r++) { DelayOff(); QueryOpen31(); if (Input31() == SER_GOODCHECK) break; if (fKey == true) return false; } if (r == MaxRepeats()) return false; ShowPercent(bPercent); if (ReadOpen31() == false) return false; return true; }