Пример #1
0
static void ShowModemReadTimeCan(bool  fShowTimeDate)
{
  ShowHi(szTimeDate);

  if (GetDigitalDevice(ibCan) == 0)
    ShowLo(szNone);
  else
  {
    LoadCurrDigital(ibCan);
    ibPort = diCurr.ibPort;

    if (LoadConnect(ibCan) == 0) return;
    Clear();

    if (mpboEnblCan[ibCan] == false)
    {
      sprintf(szHi+14,"%2u",ibCan+1);
      ShowLo(szBlocked);
    }
    else
    {
      time2 ti2 = ReadTimeCan(ibCan);
      if (ti2.fValid)
      {
        sprintf(szHi+14,"%2u",ibCan+1);
        Clear();
        (fShowTimeDate) ? ShowTimeDate(ti2.tiValue) : ShowDeltaTime(ti2.tiValue);
      }
      else Error();
    }

    SaveConnect();
  }
}
Пример #2
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);
}
Пример #3
0
void    NextDayExtended7(void)
{
  cwDayCan7++;

  memset(&mpCntDayCan7, 0, sizeof(mpCntDayCan7));

  uchar c;
  for (c=0; c<bCANALS; c++)
  {
    if (GetDigitalDevice(c) == 0)
    {
      double db = *PGetCanImpAll(mpimAbsCan,c);
      db *= mpdbValueCntHou[c];
      db += mpdbCount[c];

      value6 vl;
      vl.bStatus = ST_OK;
      vl.dbValue = db;
      vl.tiUpdate = *GetCurrTimeDate();

      mpCntDayCan7[c] = vl;
    }
  }

  SaveCntDay7(ibHardDay);
}
Пример #4
0
void    MakeSpecCurrent(uchar  ibCan, uint  wImp)
{
  double db = 0;

  if (IsSpecCurrent(GetDigitalDevice(ibCan)) == 1)
  {
    // обработка информации по импульсам
    mpwImpHouCan[ibSoftHou][ibCan] += wImp;

    AddCanImpEng(mpimDayCan[ibSoftDay], ibCan, wImp);
    AddCanImpEng(mpimMonCan[ibSoftMon], ibCan, wImp);
    AddCanImpEng(mpimAbsCan,            ibCan,wImp);


    // подготовка информации для Esc V
    if (LoadCntMon(tiCurr.bMonth-1) == false)
      db = 0;
    else
      db = mpdbCntMonCan[ PrevSoftMon() ][ibCan];

    mpdbEsc_V[ibCan] = db;
    mptiEsc_V[ibCan] = *GetCurrTimeDate();


    // подготовка информации для Esc S
    db  = mpdwBase[ibCan] * mpdbValueCntHou[ibCan];
    if (GetDigitalDevice(ibCan) == 19)
      db += mpdbCount[ibCan];

    mpdbEsc_S[ibCan] = db;
    mptiEsc_S[ibCan] = *GetCurrTimeDate();


    // подготовка информации для Esc U
    mptiEsc_U1[ibCan] = tiCurr;
    mptiEsc_U2[ibCan] = *GetCurrTimeDate();
  }
}
Пример #5
0
bool    TestDigitals()
{
    uchar   c;

    for (c=0; c<bCANALS; c++)
    {
        if (GetDigitalDevice(c) != 0)
        {
            if (StreamPortCan(GetDigitalPort(c),c) == 0) return 0;
        }
    }

    return 1;
}
Пример #6
0
void    NextHouLimitsAux(void) 
{
  if (UseBounds())
  {
    uchar c;
    for (c=0; c<bCANALS; c++)
    {
      if (IsLimitsAux(GetDigitalDevice(c)))
      {
        mpcwStopAuxCan[c]++;
      }
    }

    SaveCache(&chStopAuxCan);
  }
}
Пример #7
0
static void ShowModemReadCntCurrCan(void)
{
  if (GetDigitalDevice(ibCan) == 0)
    ShowFloat(GetCntCurrImp(ibCan));
  else
  {
    LoadCurrDigital(ibCan);
    ibPort = diCurr.ibPort;

    if (LoadConnect(ibCan) == 0) return;
    Clear();

    if (mpboEnblCan[ibCan] == false)
      ShowLo(szBlocked);
    else
    {
      double2 db2 = ReadCntCurrCan(ibCan);
      (db2.fValid) ? ShowDouble(db2.dbValue) : Error();
    }

    SaveConnect();
  }
}
Пример #8
0
void    Automatic(uchar  ibMin, uchar  ibMax)
{
uchar   i;

      enKeyboard = KBD_POSTENTER;

      ShowHi(szAutomatic);
      Clear(); DelayInf();

      for (ibPort=0; ibPort<bPORTS; ibPort++)
      {
        ShowPortDelayLo(ibPort);
        DelayInf(); fKey = 0;
      }

      Clear();
      InitConnectKey();

      ibX = 0;

      for (i=ibMin; i<ibMax; i++)
      {
        if (GetDigitalDevice(i) == 0) continue;

        uchar bRes = 0;

        LoadCurrDigital(i);
        ibPort = diCurr.ibPort;

        if (GetDigitalDevice(i) != 0)
        {
          if (StreamPortCan(GetDigitalPort(i),i) == 0)
          { bRes = 0xEE; break; }
        }

        ShowCanalNumber(i);
        ShowProgress(12,(ulong)100*i/(bCANALS-1)); DelayInf();

        if (LoadConnect(i) == 0) break;
        Clear();

        if (mpboEnblCan[i] == false)
        {
          ShowLo(szBlocked);
          DelayMsg();
        }
        else switch (diCurr.bDevice)
        {
#ifndef SKIP_A
          case 15:
          case 1:  if (AutomaticA() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_B
          case 12: if (AutomaticJ() != 1) bRes = 0xEE; break;

          case 8:
          case 2:  if (AutomaticB() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_C
          case 3:  if (AutomaticC() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_D
          case 4:  if (AutomaticD() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_E
          case 7:
          case 5:  if (AutomaticE() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_F
          case 6:  if (AutomaticF() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_G
          case 9:  if (AutomaticG() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_H
          case 10: if (AutomaticH() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_I
          case 11: if (AutomaticI() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_K
          case 14:
          case 13: if (AutomaticK() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_L
          case 17:
          case 16: if (AutomaticK() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_M
          case 18: if (AutomaticM() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_N
          case 19: if (AutomaticN() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_O
          case 20: if (AutomaticO() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_P
          case 21: if (AutomaticP() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_Q
          case 22: if (AutomaticK() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_R
          case 23: if (AutomaticR() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_S
          case 24: if (AutomaticS() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_T
          case 25: if (AutomaticT() != 1) bRes = 0xEE; break;
#endif

#ifndef SKIP_V
          case 27: if (AutomaticV() != 1) bRes = 0xEE; break;
#endif
        }

        SaveConnect();

        if (bRes == 0xEE)
        {
          ibX++;
          Error(); Beep(); DelayMsg();
        }

        if (fKey == true) bRes = 0xFF;
        fKey = 0;

        if (bRes == 0xFF) break;
      }

      ShowHi(szAutomatic);
      if (ibX != 0) { Clear(); sprintf(szLo+3, "ошибок: %-2u", ibX); LongBeep(); DelayMsg(); }  else OK();

      DelayMsg();
      KeyBreakConnect();

      SaveFactors();
}