Example #1
0
 public static AlarmMetrix Instance()
 {
     if (m_metrix == null)
     {
         m_metrix = new AlarmMetrix();
     }
     return(m_metrix);
 }
Example #2
0
        /// <summary>
        /// C9是否通过测试
        /// </summary>
        /// <returns></returns>
        public override bool IsPass()
        {
            CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_PumpType);

            if (cid == CustomProductID.Unknow)
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(false);
            }
            ProductID pid = ProductIDConvertor.Custom2ProductID(cid);
            Hashtable alarmMetrix = null;
            uint      depletealArmIndex = 0, lowVolArmIndex = 0;      //耗尽和低电压索引
            uint      completeArmIndex = 0, willCompleteArmIndex = 0; //输液结束和输液即将结束
            uint      forgetStartAlarmIndex = 0;                      //遗忘操作

            #region                                                   //查询耗尽、遗忘操作、低电、输液结束和输液即将结束5种类型的报警ID
            switch (pid)
            {
            case ProductID.GrasebyC9:
                alarmMetrix           = AlarmMetrix.Instance().AlarmMetrixC9;
                depletealArmIndex     = 15;
                lowVolArmIndex        = 12;
                completeArmIndex      = 17;
                willCompleteArmIndex  = 14;
                forgetStartAlarmIndex = 13;
                break;

            default:
                break;
            }
            #endregion
            if (depletealArmIndex == 0 ||
                lowVolArmIndex == 0 ||
                completeArmIndex == 0 ||
                willCompleteArmIndex == 0 ||
                forgetStartAlarmIndex == 0
                )
            {
                return(false);
            }
            int findIndex = m_AlarmList.FindIndex((x) =>
            {
                return(x > 0 &&
                       x != depletealArmIndex &&
                       x != lowVolArmIndex &&
                       x != completeArmIndex &&
                       x != willCompleteArmIndex &&
                       x != forgetStartAlarmIndex);
            });
            if (findIndex >= 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Example #3
0
        /// <summary>
        /// 查找某C9类泵所有出现的报警ID对应的首次发生时间
        /// </summary>
        /// <returns></returns>
        public override string GetAlarmStringAndOcurredTime()
        {
            CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_PumpType);

            if (cid == CustomProductID.Unknow)
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(string.Empty);
            }
            ProductID pid         = ProductIDConvertor.Custom2ProductID(cid);
            Hashtable alarmMetrix = null;

            #region //查询所属报警的映射表
            switch (pid)
            {
            case ProductID.GrasebyC9:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC9;
                break;

            default:
                break;
            }
            #endregion
            if (alarmMetrix == null)
            {
                return("");
            }
            StringBuilder sb          = new StringBuilder();
            DateTime      ocurredTime = DateTime.MinValue;
            foreach (var id in m_AlarmList)
            {
                if (id > 0)
                {
                    if (m_AlarmOccurredTime.ContainsKey(id))
                    {
                        ocurredTime = (DateTime)m_AlarmOccurredTime[id];
                        if (ocurredTime.Year > 2000)
                        {
                            sb.Append(ocurredTime.ToString("yyyy-MM-dd HH:mm:ss"));
                            sb.Append("->");
                        }
                    }
                    sb.Append(alarmMetrix[id] as string);
                    sb.Append("\n");
                }
            }
            return(sb.ToString().TrimEnd('\n'));
        }
Example #4
0
        public override string GetAlarmString()
        {
            CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_PumpType);

            if (cid == CustomProductID.Unknow)
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(string.Empty);
            }
            ProductID pid         = ProductIDConvertor.Custom2ProductID(cid);
            Hashtable alarmMetrix = null;

            #region //查询所属报警的映射表
            switch (pid)
            {
            case ProductID.GrasebyC9:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC9;
                break;

            default:
                break;
            }
            #endregion
            if (alarmMetrix == null)
            {
                return("");
            }
            StringBuilder sb     = new StringBuilder();
            int           iCount = 0;
            foreach (var id in m_AlarmList)
            {
                if (alarmMetrix.ContainsKey(id))
                {
                    sb.Append(alarmMetrix[id] as string);
                    sb.Append(";");
                    ++iCount;
                    if (iCount % 2 == 0)
                    {
                        sb.Append("\n");
                    }
                }
            }
            return(sb.ToString());
        }
Example #5
0
        /// <summary>
        /// 判断是否通过的标准就是除了低电和耗尽,其他的报警都算不通过(项目二期修改要求:输液即将结束、输液结束不作为报警存在)
        /// </summary>
        /// <returns></returns>
        public bool IsPass()
        {
            CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_PumpType);

            if (cid == CustomProductID.Unknow)
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(false);
            }
            ProductID pid = ProductIDConvertor.Custom2ProductID(cid);
            Hashtable alarmMetrix = null;
            uint      depletealArmIndex = 0, lowVolArmIndex = 0;      //耗尽和低电压索引
            uint      completeArmIndex = 0, willCompleteArmIndex = 0; //输液结束和输液即将结束
            uint      forgetStartAlarmIndex = 0;                      //未启动

            #region                                                   //查询耗尽.低电输液结束和输液即将结束4种类型的报警索引
            switch (pid)
            {
            case ProductID.GrasebyC6:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrixC6;
                depletealArmIndex    = 0x00000008;
                lowVolArmIndex       = 0x00000100;
                completeArmIndex     = 0x00000080;
                willCompleteArmIndex = 0;
                break;

            case ProductID.GrasebyC6T:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrixC6T;
                depletealArmIndex    = 0x00000008;
                lowVolArmIndex       = 0x00000100;
                completeArmIndex     = 0x00000080;
                willCompleteArmIndex = 0;
                break;

            case ProductID.GrasebyC8:
                alarmMetrix           = AlarmMetrix.Instance().AlarmMetrixC8;
                depletealArmIndex     = 0x00010000;
                lowVolArmIndex        = 0x00000001;
                completeArmIndex      = 0x00040000;
                willCompleteArmIndex  = 0x00000004;
                forgetStartAlarmIndex = 0x00000002;
                break;

            case ProductID.GrasebyF6:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrixF6;
                depletealArmIndex    = 0x00000008;
                lowVolArmIndex       = 0x00000100;
                completeArmIndex     = 0x00000080;
                willCompleteArmIndex = 0;
                break;

            case ProductID.GrasebyF8:    //C8和F8是一样
                alarmMetrix           = AlarmMetrix.Instance().AlarmMetrixC8;
                depletealArmIndex     = 0x00010000;
                lowVolArmIndex        = 0x00000001;
                completeArmIndex      = 0x00040000;
                willCompleteArmIndex  = 0x00000004;
                forgetStartAlarmIndex = 0x00000002;
                break;

            case ProductID.Graseby1200:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrix1200;
                depletealArmIndex    = 0x00000010;
                lowVolArmIndex       = 0x00004000;
                completeArmIndex     = 0x00000100;
                willCompleteArmIndex = 0x00001000;
                break;

            case ProductID.Graseby1200En:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrix1200En;
                depletealArmIndex    = 0x00000020;
                lowVolArmIndex       = 0x00008000;
                completeArmIndex     = 0x00000200;
                willCompleteArmIndex = 0x00002000;
                break;

            case ProductID.Graseby2000:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrix2000;
                depletealArmIndex    = 0x00000008;
                lowVolArmIndex       = 0x00000100;
                completeArmIndex     = 0x00000080;
                willCompleteArmIndex = 0;
                break;

            case ProductID.Graseby2100:
                alarmMetrix          = AlarmMetrix.Instance().AlarmMetrix2100;
                depletealArmIndex    = 0x00000008;
                lowVolArmIndex       = 0x00000100;
                completeArmIndex     = 0x00000080;
                willCompleteArmIndex = 0;
                break;

            default:
                break;
            }
            #endregion

            uint filterAlarm = m_Alarm & (~(depletealArmIndex | lowVolArmIndex | completeArmIndex | willCompleteArmIndex | forgetStartAlarmIndex));
            if (filterAlarm > 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
Example #6
0
        public string GetAlarmStringAndOcurredTime()
        {
            CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_PumpType);

            if (cid == CustomProductID.Unknow)
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(string.Empty);
            }
            ProductID pid         = ProductIDConvertor.Custom2ProductID(cid);
            Hashtable alarmMetrix = null;

            #region //查询所属报警的映射表
            switch (pid)
            {
            case ProductID.GrasebyC6:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC6;
                break;

            case ProductID.GrasebyC6T:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC6T;
                break;

            case ProductID.GrasebyC8:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC8;
                break;

            case ProductID.GrasebyF6:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixF6;
                break;

            case ProductID.GrasebyF8:    //C8和F8是一样
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC8;
                break;

            case ProductID.Graseby1200:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix1200;
                break;

            case ProductID.Graseby1200En:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix1200En;
                break;

            case ProductID.Graseby2000:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix2000;
                break;

            case ProductID.Graseby2100:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix2100;
                break;

            default:
                break;
            }
            #endregion
            StringBuilder sb          = new StringBuilder();
            DateTime      ocurredTime = DateTime.MinValue;
            foreach (DictionaryEntry dic in alarmMetrix)
            {
                uint alarmID = (uint)dic.Key;
                if ((alarmID & m_Alarm) == alarmID)
                {
                    if (m_AlarmOccurredTime.ContainsKey(alarmID))
                    {
                        ocurredTime = (DateTime)m_AlarmOccurredTime[alarmID];
                        if (ocurredTime.Year > 2000)
                        {
                            sb.Append(ocurredTime.ToString("yyyy-MM-dd HH:mm:ss"));
                            sb.Append("->");
                        }
                    }
                    sb.Append(dic.Value);
                    sb.Append("\n");
                }
            }
            return(sb.ToString().TrimEnd('\n'));
        }
Example #7
0
        public string GetAlarmString()
        {
            CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_PumpType);

            if (cid == CustomProductID.Unknow)
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(string.Empty);
            }
            ProductID pid         = ProductIDConvertor.Custom2ProductID(cid);
            Hashtable alarmMetrix = null;

            #region //查询所属报警的映射表
            switch (pid)
            {
            case ProductID.GrasebyC6:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC6;
                break;

            case ProductID.GrasebyC6T:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC6T;
                break;

            case ProductID.GrasebyC8:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC8;
                break;

            case ProductID.GrasebyF6:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixF6;
                break;

            case ProductID.GrasebyF8:    //C8和F8是一样
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrixC8;
                break;

            case ProductID.Graseby1200:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix1200;
                break;

            case ProductID.Graseby1200En:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix1200En;
                break;

            case ProductID.Graseby2000:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix2000;
                break;

            case ProductID.Graseby2100:
                alarmMetrix = AlarmMetrix.Instance().AlarmMetrix2100;
                break;

            default:
                break;
            }
            #endregion
            StringBuilder sb     = new StringBuilder();
            int           iCount = 0;
            foreach (DictionaryEntry dic in alarmMetrix)
            {
                uint alarmID = (uint)dic.Key;
                if ((alarmID & m_Alarm) == alarmID)
                {
                    sb.Append(dic.Value);
                    sb.Append(";");
                    ++iCount;
                    if (iCount % 2 == 0)
                    {
                        sb.Append("\n");
                    }
                }
            }
            return(sb.ToString());
        }
Example #8
0
        /// <summary>
        /// 判断是否通过的标准就是除了低电和耗尽,其他的报警都算不通过
        /// </summary>
        /// <returns></returns>
        public bool IsPass()
        {
            ProductID pid = ProductID.Unknow;

            if (Enum.IsDefined(typeof(ProductID), m_PumpType))
            {
                pid = (ProductID)Enum.Parse(typeof(ProductID), m_PumpType);
            }
            else
            {
                Logger.Instance().ErrorFormat("泵类型转换出错,不支持的类型 PumpType ={0}", m_PumpType);
                return(false);
            }
            Hashtable alarmMetrix = null;
            uint      depletealArmIndex = 0, lowVolArmIndex = 0; //耗尽和低电压索引

            #region                                              //查询耗尽报警索引
            switch (pid)
            {
            case ProductID.GrasebyC6:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrixC6;
                depletealArmIndex = 0x00000008;
                lowVolArmIndex    = 0x00000100;
                break;

            case ProductID.GrasebyC6T:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrixC6T;
                depletealArmIndex = 0x00000008;
                lowVolArmIndex    = 0x00000100;
                break;

            case ProductID.GrasebyC8:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrixC8;
                depletealArmIndex = 0x00010000;
                lowVolArmIndex    = 0x00000001;
                break;

            case ProductID.GrasebyF6:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrixF6;
                depletealArmIndex = 0x00000008;
                lowVolArmIndex    = 0x00000100;
                break;

            case ProductID.GrasebyF8:    //C8和F8是一样
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrixC8;
                depletealArmIndex = 0x00010000;
                lowVolArmIndex    = 0x00000001;
                break;

            case ProductID.Graseby1200:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrix1200;
                depletealArmIndex = 0x00000010;
                lowVolArmIndex    = 0x00004000;
                break;

            case ProductID.Graseby1200En:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrix1200En;
                depletealArmIndex = 0x00000020;
                lowVolArmIndex    = 0x00008000;
                break;

            case ProductID.Graseby2000:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrix2000;
                depletealArmIndex = 0x00000008;
                lowVolArmIndex    = 0x00000100;
                break;

            case ProductID.Graseby2100:
                alarmMetrix       = AlarmMetrix.Instance().AlarmMetrix2100;
                depletealArmIndex = 0x00000008;
                lowVolArmIndex    = 0x00000100;
                break;

            default:
                break;
            }
            #endregion

            uint filterAlarm = m_Alarm & (~(depletealArmIndex | lowVolArmIndex));
            if (filterAlarm > 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }