示例#1
0
        public string GetJSON(AVirtualSection obj)
        {
            FreightBreakOpenValue = obj.FreightBreakOpenValue;
            FreightBreakOpenTime  = obj.FreightBreakOpenTime;
            BreakOpenTime         = obj.BreakOpenTime;
            BreakOpenValue        = obj.BreakOpenValue;
            LiftSpeedTime         = obj.LiftSpeedTime;
            LiftSpeedValue        = obj.LiftSpeedValue;
            PatrolTime            = obj.PatrolTime;
            PatrolValue           = obj.PatrolValue;
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            return(serializer.Serialize(this));
        }
示例#2
0
        public override LEVELINFO LevelCalc(ALARMLEVEL[] alarmLevels, int rows, AVirtualSection avobj)
        {
            LEVELINFO m_pLastLevelInfo = new LEVELINFO();
            LEVELINFO li       = new LEVELINFO();
            int       lvl      = -1;
            int       maxLevel = -1;

            foreach (ILevelCalc obj in m_pLeveCalcs)
            {
                lvl = obj.Calc(alarmLevels, rows, g_nRecords, g_pList, this, ref li, avobj);
                if (lvl > maxLevel)
                {
                    maxLevel         = lvl;
                    m_pLastLevelInfo = li;
                }
            }
            return(m_pLastLevelInfo);
        }
示例#3
0
        public int Calc(ALARMLEVEL[] alarmLevels, int rows, int nRecords, RFCLICK[] g_pList, ASiteObj obj, ref LEVELINFO pLevelinfo, AVirtualSection avobj)
        {
            int i, hourRain, d;

            hourRain = 0;
            long N = nRecords;

            for (i = 0; i < rows; ++i)
            {
                if (alarmLevels[i].tag != TagType.tag_daily)
                {
                    continue;
                }
                hourRain = alarmLevels[i].dur * 10;
                long _nLiftTime = 0;
                //int span = 0;
                //d = alarmLevels[i].delta * 10;
                //switch (alarmLevels[i].level)
                //{
                //    case 1:
                //        span = d + avobj.PatrolValue;
                //        break;
                //    case 2:
                //        span = d + avobj.LiftSpeedValue;
                //        _nLiftTime = avobj.LiftSpeedTime;
                //        break;
                //    case 3:
                //        span = d + avobj.BreakOpenValue;
                //        break;
                //    case 4:
                //        span = d + avobj.FreightBreakOpenValue;
                //        break;
                //}
                long _nNow = g_pList[N - 1].tm;
                if (_nNow - _nLiftTime >= alarmLevels[i].dur * 24 * 3600)
                {
                    long _nStart = _nNow - alarmLevels[i].dur * 24 * 3600;
                    int  _nRain  = 0;
                    while (N >= 1)
                    {
                        if (g_pList[N - 1].tm <= _nNow && g_pList[N - 1].tm >= _nStart)
                        {
                            _nRain++;
                            if (N == 1)
                            {
                                break;
                            }
                            if (g_pList[N - 1].tm - g_pList[N - 2].tm >= 48 * 3600)
                            {
                                break;
                            }
                        }
                        else
                        {
                            break;
                        }
                        N--;
                    }
                    if (_nRain >= alarmLevels[i].delta * 10)
                    {
                        if (i < rows)
                        {
                            pLevelinfo.site_id   = obj.SiteID;
                            pLevelinfo.t1        = Time.DateTime2DbTime(System.DateTime.Now);
                            pLevelinfo.t2        = alarmLevels[i].dur;
                            pLevelinfo.delta     = alarmLevels[i].delta * 10;
                            pLevelinfo.level     = alarmLevels[i].level;
                            pLevelinfo.tag       = TagType.tag_daily;
                            pLevelinfo.liftValue = alarmLevels[i].liftValue;
                            pLevelinfo.liftTime  = 600;
                            pLevelinfo.TRAIN     = alarmLevels[i].TRAIN;
                        }
                        else
                        {
                            return(-1);
                        }
                    }
                }
            }
            return(pLevelinfo.level);
        }
示例#4
0
 public int Calc(ALARMLEVEL[] alarmLevels, int rows, int nRecords, RFCLICK[] g_pList, ASiteObj obj, ref LEVELINFO pLevelinfo, AVirtualSection avobj)
 {
     /*
      * int i;
      * int hourRain = 0;
      * long N = nRecords;
      * for (i = 0; i < rows; ++i)
      * {
      *  if (alarmLevels[i].tag != TagType.tag_hourcont)
      *      continue;
      *  hourRain = alarmLevels[i].dur * 10;
      *  if (g_pList[N - 1].contJmp >= alarmLevels[i].delta * 10)
      *  {
      *      if (g_pList[N - 1].tm - g_pList[N - alarmLevels[i].delta * 10].tm < alarmLevels[i].c_time * 60)
      *      {
      *          int nDouble = 0;
      *          switch (alarmLevels[i].level)
      *          {
      *
      *              case 3:
      *                  nDouble = hourRain + avobj.BreakOpenValue;
      *                  break;
      *              case 4:
      *                  nDouble = hourRain + avobj.FreightBreakOpenValue;
      *                  break;
      *          }
      *          if (N >= nDouble)
      *          {
      *              long span = 0;
      *              if (hourRain > 0)
      *                  span = g_pList[N - 1].tm - g_pList[N - hourRain].tm;
      *              else
      *                  span = g_pList[N - 1].tm - g_pList[N - 1].tm;
      *              if (span <= 3600)
      *              {
      *                  if (i < rows)
      *                  {
      *                      pLevelinfo.site_id = obj.SiteID;
      *                      pLevelinfo.t1 = Time.DateTime2DbTime(System.DateTime.Now);
      *                      pLevelinfo.t2 = 0;
      *                      pLevelinfo.delta = g_pList[N - 1].contJmp;
      *                      pLevelinfo.level = alarmLevels[i].level;
      *                      pLevelinfo.tag = TagType.tag_hourcont;
      *                      pLevelinfo.hValue = hourRain;
      *                      pLevelinfo.liftValue = alarmLevels[i].liftValue;
      *                      pLevelinfo.liftTime = 600;
      *                      pLevelinfo.TRAIN = alarmLevels[i].TRAIN;
      *                  }
      *                  else
      *                      return -1;
      *              }
      *          }
      *      }
      *
      *  }
      * }
      * return pLevelinfo.level;
      */
     return(0);
 }
示例#5
0
        public int Calc(ALARMLEVEL[] alarmLevels, int rows, int nRecords, RFCLICK[] g_pList, ASiteObj obj, ref LEVELINFO pLevelinfo, AVirtualSection avobj)
        {
            int i, hourRain;

            hourRain = 0;
            long N = nRecords;

            for (i = 0; i < rows; ++i)
            {
                if (alarmLevels[i].tag != TagType.tag_cont)
                {
                    continue;
                }
                hourRain = alarmLevels[i].dur * 10;
                if (alarmLevels[i].level == 1)
                {
                    if (g_pList[N - 1].contJmp == alarmLevels[i].delta * 10)
                    {
                        if (i < rows)
                        {
                            pLevelinfo.site_id = obj.SiteID;
                            pLevelinfo.t1      = Time.DateTime2DbTime(System.DateTime.Now);
                            pLevelinfo.t2      = 0;
                            pLevelinfo.delta   = g_pList[N - 1].contJmp;
                            pLevelinfo.level   = alarmLevels[i].level;
                            pLevelinfo.tag     = TagType.tag_cont;
                            pLevelinfo.TRAIN   = alarmLevels[i].TRAIN;
                        }
                        else
                        {
                            return(-1);
                        }
                    }
                }
                else
                {
                    if (hourRain <= 0)
                    {
                        if (g_pList[N - 1].contJmp == alarmLevels[i].delta * 10)
                        {
                            if (i < rows)
                            {
                                pLevelinfo.site_id   = obj.SiteID;
                                pLevelinfo.t1        = Time.DateTime2DbTime(System.DateTime.Now);
                                pLevelinfo.t2        = 0;
                                pLevelinfo.delta     = g_pList[N - 1].contJmp;
                                pLevelinfo.level     = alarmLevels[i].level;
                                pLevelinfo.tag       = TagType.tag_cont;
                                pLevelinfo.hValue    = hourRain;
                                pLevelinfo.liftValue = alarmLevels[i].liftValue;
                                pLevelinfo.liftTime  = 600;
                                pLevelinfo.TRAIN     = alarmLevels[i].TRAIN;
                            }
                            else
                            {
                                return(-1);
                            }
                        }
                    }
                    else
                    {
                        if (g_pList[N - 1].contJmp >= alarmLevels[i].delta * 10)
                        {
                            int nDouble = 0;
                            switch (alarmLevels[i].level)
                            {
                            case 2:
                                nDouble = hourRain + avobj.LiftSpeedValue;
                                break;

                            case 3:
                                nDouble = hourRain + avobj.BreakOpenValue;
                                break;

                            case 4:
                                nDouble = hourRain + avobj.FreightBreakOpenValue;
                                break;
                            }
                            if (N >= nDouble)
                            {
                                long span = 0;
                                if (hourRain > 0)
                                {
                                    span = g_pList[N - 1].tm - g_pList[N - hourRain].tm;
                                }
                                else
                                {
                                    span = g_pList[N - 1].tm - g_pList[N - 1].tm;
                                }
                                if (span <= 3600)
                                {
                                    if (i < rows)
                                    {
                                        pLevelinfo.site_id   = obj.SiteID;
                                        pLevelinfo.t1        = Time.DateTime2DbTime(System.DateTime.Now);
                                        pLevelinfo.t2        = 0;
                                        pLevelinfo.delta     = g_pList[N - 1].contJmp;
                                        pLevelinfo.level     = alarmLevels[i].level;
                                        pLevelinfo.tag       = TagType.tag_cont;
                                        pLevelinfo.hValue    = hourRain;
                                        pLevelinfo.liftValue = alarmLevels[i].liftValue;
                                        pLevelinfo.liftTime  = 600;
                                        pLevelinfo.TRAIN     = alarmLevels[i].TRAIN;
                                    }
                                    else
                                    {
                                        return(-1);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(pLevelinfo.level);
        }
示例#6
0
        public int Calc(ALARMLEVEL[] alarmLevels, int rows, int nRecords, RFCLICK[] g_pList, ASiteObj obj, ref LEVELINFO pLevelinfo, AVirtualSection avobj)
        {
            int i, d, h;
            int N = nRecords;

            for (i = 0; i < rows; i++)
            {
                if (alarmLevels[i].tag != TagType.tag_delta)
                {
                    continue;
                }
                int span = 0;
                d = alarmLevels[i].delta * 10;
                switch (alarmLevels[i].level)
                {
                case 1:
                    span = d + avobj.PatrolValue;
                    break;

                case 2:
                    span = d + avobj.LiftSpeedValue;
                    break;

                case 3:
                    span = d + avobj.BreakOpenValue;
                    break;

                case 4:
                    span = d + avobj.FreightBreakOpenValue;
                    break;
                }
                if (N >= span)
                {
                    if (g_pList[N - 1].tm - g_pList[N - d].tm <= alarmLevels[i].dur * 60)
                    {
                        if (alarmLevels[i].level > pLevelinfo.level)
                        {
                            pLevelinfo.dur       = alarmLevels[i].dur.ToString();
                            pLevelinfo.level     = alarmLevels[i].level;
                            pLevelinfo.delta     = d;
                            pLevelinfo.t1        = g_pList[N - d].tm;
                            pLevelinfo.t2        = g_pList[N - 1].tm;
                            pLevelinfo.tag       = TagType.tag_delta;
                            pLevelinfo.liftValue = alarmLevels[i].liftValue;
                            pLevelinfo.liftTime  = 600;
                            pLevelinfo.site_id   = obj.SiteID;
                            pLevelinfo.TRAIN     = alarmLevels[i].TRAIN;
                        }
                    }
                }
            }
            return(pLevelinfo.level);
        }