Beispiel #1
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;
}
Beispiel #2
0
void    ShowNoTariffs(uchar  ibMonth)
{
    ShowHi(szNoTariffs);
    Clear();

    sprintf(szLo,"для месяца: %-2u ",ibMonth+1);
    DelayMsg();
}
Beispiel #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;
}
Beispiel #4
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;
}
Beispiel #5
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;
}
Beispiel #6
0
// принудительный разрыв connect при действии/бездействии клавиатуры
void    KeyBreakConnect(void)
{
  if (fConnect == 1)
  {
    ShowHi(szPause);
    ShowLo(szModemStop);

    fSlide = 0;
    DelayMsg();
  }
  else Stop();

  enKeyboard = KBD_BEGIN;
  wProgram = 0;

  fKeyOn = 1;
  MakePause(DEV_MODEM_STOP);

  if (diCurr.ibPhone != 0) AddModRecord(EVE_MODEM_KEYBREAK);
}
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();
}
Beispiel #8
0
void    key_Start(void)
{
    if (enKeyboard == KBD_ENTER)
    {
        enKeyboard = KBD_BEGIN;

        ShowHi(szStart);
        Clear();


        if (boSetTime == false)
        {
            NeedProgram(bSET_CURRTIME);
            return;
        }
        else if (boSetDate == false)
        {
            NeedProgram(bSET_CURRDATE);
            return;
        }
        else if (boSetGroups == false)
        {
            NeedProgram(bSET_GROUPS);
            return;
        }
        else if (boSetPassword == false)
        {
            NeedProgram(bSET_PASSWORD);
            return;
        }

        if (TestTariffs() == 0)
            return;

        if (ValidTimeDateRTC(*GetCurrTimeDate()) == false)
        {
            ShowHi(szAlarm);
            ShowLo(szBadRTC);
            LongBeep();
            DelayMsg();
            return;
        }

        if (TestDigitals() == 0)
            return;

// TODO key_Start

        // рассчитываем массивы индексов тарифов для каждого получаса текущих суток (для мощности и энергии)
        MakeAllCurrTariffs();

        StartFactors();
        StartRealtime();
        StartImpulses();

        // устанавливаем признаки используемых каналов и групп
        MakeUsedNodes();

        StartDefects();

        tiStart = *GetCurrTimeDate();
        SaveCache(&chStart);

        Work();
        OK();

        Beep();

        SetLabelGlobal();
        enGlobal = GLB_WORK;

        AddSysRecord(EVE_START);

//    if (boDTREnable == true) DTROff_All();
    }
    else Beep();
}
Beispiel #9
0
bool    ResetFlash(void)
{
uint    i;

  ShowHi(szFlashErase);
  wPage = 0;

  ibSoftDay = 0;
  ibSoftMon = 0; // TODO

  uint m;
  for (m=0; m<bMINUTES; m++)
  {
    if (FreeImpMnt(m) == false) return false;
    ShowFlashErase();
  }

  uint wPageOut;
  for (wPageOut=IMPHOUCAN; wPageOut<(IMPHOUCAN+IMPHOUCAN_PAGES); wPageOut++)
  {
    if (SafePageErase(wPageOut) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  memset(&mpimDayCan, 0, sizeof(mpimDayCan));
  for (i=0; i<bDAYS; i++) 
  {
    if (SaveImpDay(0,i,ibSoftDay) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  memset(&mpimMonCan, 0, sizeof(mpimMonCan));
  for (i=0; i<bMONTHS; i++) 
  {
    if (SaveImpMon(0,i,ibSoftMon) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  memset(&mppoDayGrp, 0, sizeof(mppoDayGrp));
  for (i=0; i<bDAYS; i++) 
  {
    if (SavePowDay(0,i,ibSoftDay) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  memset(&mppoMonGrp, 0, sizeof(mppoMonGrp));
  for (i=0; i<bMONTHS; i++) 
  {
    if (SavePowMon(0,i,ibSoftMon) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  memset(&mpdbCntMonCan, 0, sizeof(mpdbCntMonCan));
  for (i=0; i<bMONTHS; i++) 
  {
    if (SaveCntMon(0,i,ibSoftMon) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  for (wPageOut=PARAMS_VALUES; wPageOut<(PARAMS_VALUES+PARAMS_PAGES*wTIMES); wPageOut++)
  {
    if (SafePageErase(wPageOut) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  for (wPageOut=KEY_RECORD; wPageOut<(KEY_RECORD+bRECORD_PAGES*6+wRECORD2_PAGES*1); wPageOut++)
  {
    if (SafePageErase(wPageOut) == false) return false;
    if (GetFlashStatus() != 0) return false;
    ShowFlashErase();
  }

  if (CleanImpHouBuff() == false) return false;

  if (CleanImpDayBuff() == false) return false;
  if (CleanImpMonBuff() == false) return false;
  if (CleanImpAbsBuff() == false) return false;

  if (CleanPowDayBuff() == false) return false;
  if (CleanPowMonBuff() == false) return false;

  if (CleanCntMonBuff() == false) return false;

  if (ClearDiagram() == false) return false;


  ShowHi(szFlashRead);
  wPage = 0;

  bool f = true;

  uint wPageIn;
  for (wPageIn=FLASH_BEGIN; wPageIn<FLASH_END; wPageIn++)
  {
    if (SafePageRead(wPageIn) == false) return false;

    if (GetFlashChecksum() == 0)
    {
      SaveDisplay();

      ShowHi(szErrorCrc);
      Clear(); sprintf(szLo+1,"страница: %u",wPageIn);

      Beep();
      DelayMsg();

      LoadDisplay();

      f = false;
    }

    ShowFlashRead();
  }

  return f;
}