void _readDviInfo_CompleteRetryRefreshDviInfoEvent(object sender, CompleteRefreshSenderDviEventArgs e) { _fLogService.Info("读取DVI数据完成,开始解析..."); SendStatusMsg("GetDVIDataFinish"); #region 解析发送卡数据 if (e.IsRefreshSuccess) { _allMonitorData.CurAllSenderStatusDic = GetWorkStatusList(e.StatusDic); _allMonitorData.CurAllSenderDVIDic = e.RefreshRateDic; _allMonitorData.RedundantStateType = e.RedundantState; _allMonitorData.TempRedundancyDict = new SerializableDictionary<string, List<SenderRedundancyInfo>>(); foreach (KeyValuePair<string, List<SenderRedundancyInfo>> keyvalue in _reduInfoList) { if (keyvalue.Value == null || keyvalue.Value.Count == 0) { _allMonitorData.TempRedundancyDict.Add(keyvalue.Key, null); } else { _allMonitorData.TempRedundancyDict.Add(keyvalue.Key, keyvalue.Value); } } _allMonitorData.CommPortData = new SerializableDictionary<string, int>(); EquipmentInfo equipInfo = null; int count = 0; foreach (string commPort in _serverProxy.EquipmentTable.Keys) { equipInfo = _serverProxy.EquipmentTable[commPort]; if (equipInfo == null || equipInfo.EquipTypeCount <= 0) { continue; } if (CustomTransform.IsSystemController(equipInfo.ModuleID)) { count = CustomTransform.GetPortNumber(equipInfo.ModuleID); _allMonitorData.CommPortData.Add(commPort, count); } } //枚举每个使用到的串口 foreach (string comName in _allComBaseInfo.AllInfoDict.Keys) { OneCOMHWBaseInfo baseInfo = _allComBaseInfo.AllInfoDict[comName]; //枚举每个显示屏 for (int i = 0; i < baseInfo.LEDDisplayInfoList.Count; i++) { ILEDDisplayInfo displayInfo = baseInfo.LEDDisplayInfoList[i]; //获取显示屏用到的发送卡 List<ScreenSenderAddrInfo> scrSenderAddrList; displayInfo.GetScreenSenderAddrInfo(out scrSenderAddrList); //从所有硬件数据中找出当前显示屏的数据 ScreenModnitorData monitorData = FindScreenMonitorDataFromList(_allMonitorData.AllScreenMonitorCollection, GetScreenUdid(baseInfo.FirstSenderSN, i)); if (monitorData != null) { for (int j = 0; j < scrSenderAddrList.Count; j++) { #region 获取每个显示屏的每张发送卡的数据 int senderIndex = scrSenderAddrList[j].SenderIndex; SenderMonitorInfo senderMInfo = new SenderMonitorInfo(); senderMInfo.DeviceStatus = DeviceWorkStatus.OK; senderMInfo.DeviceRegInfo = new DeviceRegionInfo(); senderMInfo.DeviceRegInfo.CommPort = comName; senderMInfo.DeviceRegInfo.SenderIndex = (byte)senderIndex; #region 设置发送卡的路径 senderMInfo.MappingList = GetSenderSearchMapping(i, senderIndex); #endregion #region 设置发送卡DVI信息 if (e.RefreshRateDic.ContainsKey(comName)) { List<ValueInfo> senderRefInfo = e.RefreshRateDic[comName]; if (senderIndex < senderRefInfo.Count) { senderMInfo.IsDviConnected = senderRefInfo[senderIndex].IsValid; senderMInfo.DviRate = (int)senderRefInfo[senderIndex].Value; } else { senderMInfo.DeviceStatus = DeviceWorkStatus.Error; } } else { senderMInfo.DeviceStatus = DeviceWorkStatus.Error; } #endregion #region 设置发送卡网口的状态(冗余) if (e.RedundantState.ContainsKey(comName)) { Dictionary<int, SenderRedundantStateInfo> senderReduStateDict = e.RedundantState[comName]; if (senderReduStateDict.ContainsKey(senderIndex)) { SenderRedundantStateInfo senderReduInfo = senderReduStateDict[senderIndex]; foreach (int portIndex in senderReduInfo.RedundantStateTypeList.Keys) { PortOfSenderMonitorInfo portOfSenderInfo = new PortOfSenderMonitorInfo(); portOfSenderInfo.DeviceStatus = DeviceWorkStatus.OK; #region 设置网口的路径 portOfSenderInfo.MappingList = GetPortOfSenderMapping(i, senderIndex, portIndex); #endregion if (senderReduInfo.RedundantStateTypeList[portIndex] == RedundantStateType.Error) { portOfSenderInfo.IsReduState = true; } else { portOfSenderInfo.IsReduState = false; } senderMInfo.ReduPortIndexCollection.Add(portOfSenderInfo); } } } #endregion #endregion monitorData.SenderMonitorCollection.Add(senderMInfo); } } } } } SendStatusMsg("ParsingDVIDataFinish"); NotifyCompleteAllMonitor(); #endregion }
public object Clone() { PortOfSenderMonitorInfo data = new PortOfSenderMonitorInfo(); if (!this.CopyTo(data)) { return null; } return data; }