/// <summary> /// 根据vobc烧录文件类型获取对应该类型的nameof值 /// </summary> /// <param name="type">vobc烧录文件类型</param> /// <returns></returns> public static string GetFileByType(vobcFileType type) { //返回值变量定义 string rtnString = ""; //根据输入的子系统文件类型 转译成子系统文件名称 switch (type) { case vobcFileType.BootLoader: rtnString = "引导文件"; break; case vobcFileType.CCOVConfig: rtnString = "配置"; break; case vobcFileType.CORE: rtnString = "内核"; break; case vobcFileType.DATA: rtnString = "数据"; break; case vobcFileType.NVRAM: rtnString = "NvRam"; break; default: break; } return(rtnString); }
/// <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 + "的产品"); } }