コード例 #1
0
        /// <summary>
        /// 通过输入参数 vobc子系统类型 获取vobc子系统名称
        /// </summary>
        /// <param name="sType">vobc子系统类型</param>
        /// <returns>vobc子系统名称</returns>
        public static string GetVobcSystemNameByType(vobcSystemType sType)
        {
            string sName = string.Empty;

            switch (sType)
            {
            case vobcSystemType.ATP_1:
                sName = "ATP_1";
                break;

            case vobcSystemType.ATP_2:
                sName = "ATP_2";
                break;

            case vobcSystemType.ATP_3:
                sName = "ATP_3";
                break;

            case vobcSystemType.ATO_1:
                sName = "ATO_1";
                break;

            case vobcSystemType.ATO_2:
                sName = "ATO_2";
                break;

            case vobcSystemType.COM_1:
                sName = "COM_1";
                break;

            case vobcSystemType.COM_2:
                sName = "COM_2";
                break;

            case vobcSystemType.MMI:
                sName = "MMI";
                break;

            case vobcSystemType.CCOV:
                sName = "CCOV";
                break;

            case vobcSystemType.INVALID:
                sName = "";
                break;

            default:
                break;
            }

            return(sName);
        }
コード例 #2
0
        /// <summary>
        /// 设置产品的VOBC设备的状态函数
        /// </summary>
        /// <param name="ip">ip地址</param>
        /// <param name="systype">VOBC子系统标识</param>
        /// <param name="updateState">更新状态</param>
        public void SetProductVOBCDeviceState(string ip,
                                              vobcSystemType systype, int updateState)
        {
            //根据IP获取对应的product内容
            VOBCProduct product = this.Find(x => (x.Ip == ip)) as VOBCProduct;

            //product非空验证
            if (null != product)
            {
                //依据检索出的product 根据产品实体名称 获取对应的device内容
                IDevice device = product.CBelongsDevice.Find(y => y.DeviceName == CommonMethod.GetStringByType(systype));

                //device非空验证
                if (null != device)
                {
                    if (updateState == CommonConstValue.constValueHEX55)
                    {
                        device.State = "更新成功";
                    }
                    else if (updateState == CommonConstValue.constValueHEXAA)
                    {
                        device.State = "更新失败";
                    }
                    else
                    {
                        device.State = "更新失败";
                    }

                    //任一系更新失败则整个相关设备更新失败

                    ///通知界面数据变化
                    base.dataModify.Modify();

                    //记录日志
                    LogManager.InfoLog.LogProcInfo("IProContainer", "SetProductVOBCDeviceProcState", "设置IP为" + ip + "的产品" + product.ProductID + "中的设备" + device.DeviceName + "的烧录状态为" + device.State);
                    product.Report.ReportWindow(ip + "的产品" + product.ProductID + "中的设备" + device.DeviceName + "的烧录状态为" + device.State);
                }
                else
                {
                    //记录异常日志
                    LogManager.InfoLog.LogProcError("IProContainer", "SetProductVOBCDeviceProcState", "设置IP为" + ip + "的产品" + product.ProductID + "中的设备" + CommonMethod.GetStringByType(systype) + "的烧录状态时,未检索到该device");
                    product.Report.ReportWindow(ip + "的产品" + product.ProductID + "中的设备" + CommonMethod.GetStringByType(systype) + "的烧录状态时,未检索到该device");
                }
            }
            else
            {
                //记录异常日志
                LogManager.InfoLog.LogProcError("IProContainer", "SetProductVOBCDeviceProcState", "设置VOBC产品实体烧录状态时,未获取到IP为" + ip + "的产品");
                product.Report.ReportWindow("设置VOBC产品实体烧录状态时,未获取到IP为" + ip + "的产品");
            }
        }
コード例 #3
0
        /// <summary>
        /// 依据vobc子系统类型获取对应该类型的nameof值
        /// </summary>
        /// <param name="type">vobc子系统类型</param>
        /// <returns>转化后的值</returns>
        public static string GetStringByType(vobcSystemType type)
        {
            //返回值变量定义
            string rtnString = string.Empty;

            //根据输入的子系统类型 转译成子系统名称
            switch (type)
            {
            case vobcSystemType.ATO_1:
                rtnString = "ATO_1";
                break;

            case vobcSystemType.ATO_2:
                rtnString = "ATO_2";
                break;

            case vobcSystemType.ATP_1:
                rtnString = "ATP_1";
                break;

            case vobcSystemType.ATP_2:
                rtnString = "ATP_2";
                break;

            case vobcSystemType.ATP_3:
                rtnString = "ATP_3";
                break;

            case vobcSystemType.CCOV:
                rtnString = "CCOV";
                break;

            case vobcSystemType.COM_1:
                rtnString = "COM_1";
                break;

            case vobcSystemType.COM_2:
                rtnString = "COM_2";
                break;

            case vobcSystemType.MMI:
                rtnString = "MMI";
                break;

            default:
                rtnString = "";
                break;
            }

            return(rtnString);
        }
コード例 #4
0
        /// <summary>
        /// 外部接口设置VOBC某产品实体的某设备烧录成功状态,仅用于更新烧录成功失败状态,区别于常规状态设置SetProductDeviceState
        /// </summary>
        /// <param name="ip">vobc产品IP</param>
        /// <param name="systype">产品子系统类型</param>
        /// <param name="fileType">产品子系统更新文件类型</param>
        /// <returns>无</returns>
        public void SetProductVOBCDeviceState(string ip,
                                              vobcSystemType systype, Common.vobcFileType fileType)
        {
            //更新状态
            bool updateState = true;

            //根据IP获取对应的product内容
            VOBCProduct product = this.Find(x => (x.Ip == ip)) as VOBCProduct;

            //product非空验证
            if (null != product)
            {
                //依据检索出的product 根据产品实体名称 获取对应的device内容
                IDevice device = product.CBelongsDevice.Find(y => y.DeviceName == CommonMethod.GetStringByType(systype));

                //device非空验证
                if (null != device)
                {
                    //根据子子系统类型  获取该子子系统的更新结果
                    switch (systype)
                    {
                    case vobcSystemType.ATP_1:
                    case vobcSystemType.ATP_2:
                    case vobcSystemType.ATP_3:
                        updateState = product.CheckUpdateResultTypeFile("ATP");
                        break;

                    case vobcSystemType.ATO_1:
                    case vobcSystemType.ATO_2:
                        updateState = product.CheckUpdateResultTypeFile("ATO");
                        break;

                    case vobcSystemType.COM_1:
                    case vobcSystemType.COM_2:
                        updateState = product.CheckUpdateResultTypeFile("COM");
                        break;

                    case vobcSystemType.MMI:
                        updateState = product.CheckUpdateResultTypeFile("MMI");
                        break;

                    case vobcSystemType.CCOV:
                        updateState = product.CheckUpdateResultTypeFile("CCOV");
                        break;

                    default:
                        //TODO  不处理
                        break;
                    }

                    //根据子子系统更新结果 赋值更新状态
                    device.State = updateState ? "更新成功" : "更新失败";

                    ///通知界面数据变化
                    base.dataModify.Modify();

                    //记录日志
                    LogManager.InfoLog.LogProcInfo("IProContainer", "SetProductVOBCDeviceProcState", "设置IP为" + ip + "的产品" + product.ProductID + "中的设备" + device.DeviceName + "的烧录状态为成功");
                }
                else
                {
                    //记录异常日志
                    LogManager.InfoLog.LogProcError("IProContainer", "SetProductVOBCDeviceProcState", "设置IP为" + ip + "的产品" + product.ProductID + "中的设备" + CommonMethod.GetStringByType(systype) + "的烧录状态时,未检索到该device");
                }
            }
            else
            {
                //记录异常日志
                LogManager.InfoLog.LogProcError("IProContainer", "SetProductVOBCDeviceProcState", "设置VOBC产品实体烧录状态时,未获取到IP为" + ip + "的产品");
            }
        }
コード例 #5
0
        /// <summary>
        /// 外部接口设置VOBC某产品实体的某设备烧录进度状态属性
        /// </summary>
        /// <param name="ip">vobc产品IP</param>
        /// <param name="deviceProc">要设置的进度信息(百分比)</param>
        /// <param name="type">产品子系统类型</param>
        /// <param name="file">产品子系统文件类型</param>
        /// <returns>无</returns>
        public void SetProductVOBCDeviceProc(string ip, int deviceProc, vobcSystemType type, vobcFileType file)
        {
            //根据IP获取对应的product内容
            IProduct product = this.Find(x => (x.Ip == ip));

            //product非空验证
            if (null != product)
            {
                //依据检索出的product 根据产品实体名称 获取对应的device内容
                IDevice device = product.CBelongsDevice.Find(y => y.DeviceName == CommonMethod.GetStringByType(type));

                //device非空验证
                if (null != device)
                {
                    //设置进度信息
                    device.ProcessState = CommonMethod.GetFileByType(file) + ":" + deviceProc.ToString() + "%";

                    if (deviceProc != 100)
                    {
                        device.State = "更新执行中";
                    }

                    //如果进度为100%,设置状态为下发完成
                    if (deviceProc == 100)
                    {
                        device.State = "下发完成";
                    }

                    ///通知界面数据变化
                    dataModify.Modify();

                    //记录日志
                    LogManager.InfoLog.LogProcInfo("IProContainer", "SetProductVOBCDeviceProcState", "设置IP为" + ip + "的产品" + product.ProductID + "中的设备" + device.DeviceName + "的进度为" + deviceProc);

                    //待定:未收到更新回复超时
                    //if (device.State == "下发完成")
                    //{
                    //    int skipCount = 0;
                    //    while ((device.State != "更新成功") || (device.State != "更新失败"))
                    //    {
                    //        if (skipCount > 30)
                    //        {
                    //            device.State = "更新失败";
                    //            LogManager.InfoLog.LogProcInfo("VOBCProduct", "GenConfigHLHT", "未收到下位机允许上传回复超时或下位机拒绝上传文件");

                    //            break;
                    //        }
                    //        else
                    //        {
                    //            //跳出计数+1
                    //            skipCount++;

                    //            //休眠1秒
                    //            Thread.Sleep(1000);
                    //        }
                    //    }
                    //}
                }
                else
                {
                    //记录异常日志
                    LogManager.InfoLog.LogProcError("IProContainer", "SetProductVOBCDeviceProcState", "设置IP为" + ip + "的产品" + product.ProductID + "中的设备" + CommonMethod.GetStringByType(type) + "的进度时,未检索到该device");
                }
            }
            else
            {
                //记录异常日志
                LogManager.InfoLog.LogProcError("IProContainer", "SetProductVOBCDeviceProcState", "设置VOBC产品实体烧录进度时,未获取到IP为" + ip + "的产品");
            }
        }
コード例 #6
0
        /// <summary>
        /// 通过输入参数 vobc子系统类型 获取vobc子系统集合
        /// 用途:上位机上传文件时,例如ATP,只会上传一份ATP文件,但实际界面
        /// 显示时,需要显示3个ATP的状态
        /// </summary>
        /// <param name="sType">vobc子系统类型</param>
        /// <returns>vobc子系统类型集合</returns>
        public static List <vobcSystemType> GetVobcSystemListByType(vobcSystemType sType)
        {
            List <vobcSystemType> typeList = new List <vobcSystemType>();

            switch (sType)
            {
            case vobcSystemType.ATP_1:
                typeList.Add(vobcSystemType.ATP_1);
                typeList.Add(vobcSystemType.ATP_2);
                typeList.Add(vobcSystemType.ATP_3);
                break;

            case vobcSystemType.ATP_2:
                break;

            case vobcSystemType.ATP_3:
                break;

            case vobcSystemType.ATO_1:
                typeList.Add(vobcSystemType.ATO_1);
                typeList.Add(vobcSystemType.ATO_2);
                break;

            case vobcSystemType.ATO_2:
                break;

            case vobcSystemType.COM_1:
                typeList.Add(vobcSystemType.COM_1);
                typeList.Add(vobcSystemType.COM_2);
                break;

            case vobcSystemType.COM_2:
                break;

            case vobcSystemType.MMI:
                typeList.Add(vobcSystemType.MMI);
                break;

            case vobcSystemType.CCOV:
                typeList.Add(vobcSystemType.CCOV);
                break;

            case vobcSystemType.ALL:
                typeList.Add(vobcSystemType.ATP_1);
                typeList.Add(vobcSystemType.ATP_2);
                typeList.Add(vobcSystemType.ATP_3);
                typeList.Add(vobcSystemType.ATO_1);
                typeList.Add(vobcSystemType.ATO_2);
                typeList.Add(vobcSystemType.COM_1);
                typeList.Add(vobcSystemType.COM_2);
                typeList.Add(vobcSystemType.MMI);
                typeList.Add(vobcSystemType.CCOV);
                break;

            case vobcSystemType.INVALID:
                break;

            default:
                break;
            }

            return(typeList);
        }