Beispiel #1
0
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;
}
Beispiel #2
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);
}
Beispiel #3
0
// открытие канала для сумматоров СЭМ-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);
}
Beispiel #5
0
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);
}
Beispiel #6
0
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);
}
Beispiel #7
0
// чтение коэффициентов для счётчика Меркурий-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);
}
Beispiel #8
0
void    ShowFlashRead(void)
{
  ResetWatchdog();
  ShowPercent((ulong)100*(++wPage)/(FLASH_END-FLASH_BEGIN+1));
#ifdef NO_DISPLAY
  RunLED_Reset();
#endif
}
Beispiel #9
0
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
}
Beispiel #10
0
bool    AutomaticH(void)
{
  if (ReadKoeffDeviceH() == 0) return(0);
  ShowPercent(100);

  SetCanalsAll();                       // сохранение К преобразования и К трасформации

  return(1);
}
Beispiel #11
0
// открытие канала для счётчиков 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);
}
Beispiel #12
0
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;
}
Beispiel #14
0
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);
}
Beispiel #15
0
// задание параметров для сумматора СЭМ+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);
}
Beispiel #16
0
// открытие канала для счётчиков 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);
}
Beispiel #17
0
// задание параметров для счётчиков 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);
}
Beispiel #21
0
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);
}
Beispiel #24
0
// задание параметров для счётчиков СС-301
bool    AutomaticC(void)
{
  if (ReadKoeffDeviceC() == 0) return(0);


  SetCanalsAll();                       // сохранение К преобразования и К трасформации

  DelayOff();
  QueryEnergyAbsC();                    // чтение накопленной энергии

  if (RevInput() != SER_GOODCHECK) return(0);
  ShowPercent(100);
/*
  ReadEnergyC();
  SetEnergyAll();                       // сохранение показаний счётчиков
*/
  return(1);
}
Beispiel #25
0
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;
}
Beispiel #26
0
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;
}
Beispiel #28
0
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);
}
Beispiel #29
0
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;
}