Example #1
0
bool    SearchDefHouIndex2(uint  wLimit)
{
  tiAlt = tiDig;
  dwTmp = DateToHouIndex();

  tiAlt = tiCurr;
  dwBuffC = DateToHouIndex();

  if (dwTmp > dwBuffC) return(0);
  if (dwBuffC - dwTmp > wHOURS) return(0);

  if (dwTmpPrev == 0)
  {
    dwTmpPrev = dwTmp;
  }
  else
  {
    if (dwTmp > dwTmpPrev) return(0);
    if (dwTmpPrev - dwTmp > wLimit) return(0);
    dwTmpPrev = dwTmp;
  }

  iwDigHou = (wHOURS+iwHardHou-(dwBuffC-dwTmp)) % wHOURS;
  return(1);
}
Example #2
0
bool    SearchDefHouIndex(time  tiExt)
{
  ulong dwExt = DateToHouIndex(tiExt);
  ulong dwInt = DateToHouIndex(tiCurr);

  if (dwExt > dwInt) return(0);

  ulong dw = dwInt - dwExt;
  if (dw > wHOURS) return(0);

  iwDigHou = (wHOURS+iwHardHou-dw) % wHOURS;
  return(1);
}
Example #3
0
void    QueryHeaderS(void)
{
  HideCurrTime(1);


  ulong dw = DateToHouIndex(tiDigPrev);
  dw -= wBaseCurr;
  tiDig = HouIndexToDate(dw);


  InitPush(0);

  PushChar(0xC0);
  PushChar(0x48);

  PushAddressS();

  PushChar(0xD5);
  PushChar(0x01);
  PushChar(0x34);

  PushChar(ToBCD(tiDig.bDay));
  PushChar(ToBCD(tiDig.bMonth));
  PushChar(ToBCD(tiDig.bYear));
  PushChar(tiDig.bHour*2 + tiDig.bMinute/30);
  PushChar(4);

  QueryS(100+23, 20);
}
Example #4
0
void    QueryHeaderQ(void)
{
  HideCurrTime(1);

  ulong dw = DateToHouIndex(tiDigPrev);
  dw -= wBaseCurr;
  tiDig = HouIndexToDate(dw);


  szHi[10] = 'A' + ibLineQ;


  QueryHeaderQ_22(ibLineQ);
}
Example #5
0
void    QueryHeaderU_Plc(void)
{
	HideCurrTime(1);

  ulong dw = DateToHouIndex(tiDigPrev);
  dw -= wBaseCurr;
  tiDig = HouIndexToDate(dw);
  

  szHi[10] = 'A' + ibMinor;       
     
  ibMinorMax = 2;
  QueryHeaderU_Plc_Inner();
}
Example #6
0
bool    ReadDataU_Plc(void)
{
  uchar i;
  for (i=0; i<bPlcUSize; i++)
  {
    ulong dw = DateToHouIndex(tiDigPrev);

    dw += (bPlcUSize-1);
    dw -= (wBaseCurr + i);

    tiDig = HouIndexToDate(dw);

    if (ReadDataU_Plc_Inner(bPlcUSize-1-i) == 0) return(0);
  }
  
  wBaseCurr += bPlcUSize;
  if (wBaseCurr > wHOURS) return(0);

  return(1);
}
Example #7
0
void    OutImpCanHouExt(void)
{
  InitPushPtr();
  uint wSize = 0;

  uint iwHhr = bInBuff6*0x100 + bInBuff7;

  if (enGlobal == GLB_PROGRAM)
    Result(bRES_NEEDWORK);
  else if (iwHhr >= wHOURS)
    Result(bRES_BADADDRESS);
  else
  {
    uchar i;
    for (i=0; i<bInBuff8; i++)
    {
      ulong dw = DateToHouIndex(tiCurr);
      dw -= iwHhr;
      time ti = HouIndexToDate(dw);

      wSize += PushTime(ti);

      if (LoadImpHouFree((wHOURS+iwHardHou-iwHhr) % wHOURS) == false) { Result(bRES_BADFLASH); return; }

      uchar c;
      for (c=0; c<bCANALS; c++)
      {
        if (iwHhr >= wHOURS)
          PushIntBig(0);
        else
          PushIntBig( mpwImpHouCan[ PrevSoftHou() ][ c ] );

        wSize += sizeof(uint);
      }

      iwHhr++;
    }

    OutptrOutBuff(wSize);
  }
}
Example #8
0
bool    ReadHeaderS(void)
{
  uchar i;
  for (i=0; i<4; i++)
  {
    ulong dw = DateToHouIndex(tiDigPrev);

    dw += 4-1;
    dw -= (wBaseCurr + i);

    tiDig = HouIndexToDate(dw);

    if (dw < dwValueS)
      if (ReadDataS(4-1-i) == 0) return(0);
  }

  wBaseCurr += 4;
  if (wBaseCurr > wHOURS) return(0);

  return(1);
}
Example #9
0
bool    ReadDataQ(void)
{
uchar   j;

  sprintf(szLo," %02u    %02u.%02u.%02u", tiDig.bHour, tiDig.bDay,tiDig.bMonth,tiDig.bYear);

  if (SearchDefHouIndex(tiDig) == 0) return(1);


  if ((tiDig.bDay   == tiCurr.bDay)   &&
      (tiDig.bMonth == tiCurr.bMonth) &&
      (tiDig.bYear  == tiCurr.bYear))
    j = 47-(tiCurr.bHour*2+tiCurr.bMinute/30);
  else
    j = 0;

  uchar h;
  for (h=j; h<48; h++)
  {
    ResetWatchdog();
    MakeDataQ(47-h);

    MakeSpecial(tiDig);
    if (MakeStopHou(0) == 0) return(0);


    ulong dw = DateToHouIndex(tiDigPrev);
    dw -= wBaseCurr;
    tiDig = HouIndexToDate(dw);


    iwDigHou = (wHOURS+iwDigHou-1)%wHOURS;
  }

  return(1);
}
Example #10
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));
}