/// <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); }
/// <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 + "的产品"); } }
/// <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); }
/// <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 + "的产品"); } }
/// <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 + "的产品"); } }
/// <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); }