Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
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;
}
Пример #4
0
void    NextHouLimitsAux(void) 
{
  if (UseBounds())
  {
    uchar c;
    for (c=0; c<bCANALS; c++)
    {
      if (IsLimitsAux(GetDigitalDevice(c)))
      {
        mpcwStopAuxCan[c]++;
      }
    }

    SaveCache(&chStopAuxCan);
  }
}
Пример #5
0
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;
}
Пример #6
0
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;
}