private void GetServerData(DataTable dt, byte eventType) { if (eventType == CS_AskReply.ClientReplyPackStatus) { ChangePackChoose(Convert.ToInt32(dt.Rows[0]["cellNum"]), Convert.ToInt32(dt.Rows[0]["temperatureNum"])); } else { DataHistory.Rows.Clear(); string errorStr = string.Empty; foreach (DataRow dr in dt.Rows) { DataRow drHistory = DataHistory.NewRow(); drHistory["时间"] = dr[1]; byte[] arrByteInfo = BLLCommon.GetArrData(dr); try { if (eventType == CS_AskReply.ClientReplyPack) { foreach (var item in PackHistoryDataList) { item.UpdateData(arrByteInfo); drHistory[item.VarNameUnit] = item.VarValue; } } else if (eventType == CS_AskReply.ClientReplyGroup) { foreach (var item in packGroupList) { item.UpdateData(arrByteInfo); drHistory[item.VarNameUnit] = item.VarValue; } } } catch (Exception) { errorStr = "部分数据存在异常!"; continue; } DataHistory.Rows.Add(drHistory); } if (errorStr != string.Empty) { DXMessageBox.Show(errorStr, "提示", MessageBoxButton.OK, MessageBoxImage.Error); } CreateChartFun(null); } }
private void RenovateData(DataRow dr) { byte[] arrData = BLLCommon.GetArrData(dr); DataRow drCurrent = dataCurrent.NewRow(); drCurrent["时间"] = DateTime.Now; foreach (var item in MasterDataList) { item.UpdateData(arrData); drCurrent[item.VarNameUnit] = item.VarValue; } UpdateChartFun(Convert.ToDouble(drCurrent[DataType])); dataCurrent.Rows.Add(drCurrent); if (dataCurrent.Rows.Count > 10000) { for (int i = 0; i < dataCurrent.Rows.Count - 10000; i++) { dataCurrent.Rows.RemoveAt(0); } } if (RenovateTime != dr[1].ToString()) { //更新图表Source RenovateTime = dr[1].ToString(); } stateList.Clear(); foreach (var item in allstateList) { item.UpdateData(arrData); if (item.StateValue) { stateList.Add(item); } } }
private void RenovateData(DataRow dr) { byte[] arrByteInfo = BLLCommon.GetArrData(dr); //刷新显示的同时缓存实时数据 DataRow drCurrent = dataCurrent.NewRow(); drCurrent["时间"] = DateTime.Now; foreach (var item in CurrentDataList) { item.UpdateData(arrByteInfo); drCurrent[item.VarNameUnit] = item.VarValue; } //利用委托更新图表Source UpdateChartFun(Convert.ToDouble(drCurrent[DataType])); dataCurrent.Rows.Add(drCurrent); if (dataCurrent.Rows.Count > 10000) { for (int i = 0; i < dataCurrent.Rows.Count - 10000; i++) { dataCurrent.Rows.RemoveAt(0); } } //电压信号灯 double D_value = cellMaxVolt.VarValue - cellMinVolt.VarValue; if (D_value >= 0 && D_value <= 0.1) { StatusV = 0x00; TooltipV = "正常"; } else if (D_value > 0.1 && D_value <= 0.2) { StatusV = 0x01; TooltipV = "电芯压差三级告警"; } else if (D_value > 0.2 && D_value <= 0.3) { StatusV = 0x02; TooltipV = "电芯压差二级告警"; } else { StatusV = 0x03; TooltipV = "电芯压差一级告警"; } if (BatVolt.VarPromptStatus != "NormalOn") { if (TooltipV == "正常") { TooltipV = ""; } StatusV = 0x03; TooltipV += BatVolt.VarName + "异常"; } foreach (var item in PackCellList) { if (item.VarPromptStatus != "NormalOn") { if (TooltipV == "正常") { TooltipV = ""; } StatusV = 0x03; TooltipV += item.VarName + "异常"; break; } } //电流信号灯 if (BatTemp.VarPromptStatus != "NormalOn") { StatusA = 0x03; TooltipA = BatTemp.VarName + "异常"; } else { TooltipA = "正常"; } //更新SOC SOC = (PackOtherList.Find(delegate(DigitVarViewModel dv) { return(dv.VarName == "剩余容量"); }).VarValue / PackOtherList.Find(delegate(DigitVarViewModel dv) { return(dv.VarName == "总容量"); }).VarValue) * 100; if (SOC > 30 && SOC <= 100) { StatusSOC = 0x00; TooltipSOC = "正常"; } else if (SOC <= 30 && SOC > 10) { StatusSOC = 0x01; TooltipSOC = "电量低于30%"; } else if (SOC <= 10 && SOC > 5) { StatusSOC = 0x02; TooltipSOC = "电量低于10%"; } else { StatusSOC = 0x03; TooltipSOC = "电量过低"; } StatusT = 0x00; TooltipT = "正常"; //温度信号灯 foreach (var item in PackOtherList) { if (item.HasPromptStatus) { if (item.VarPromptStatus != "NormalOn") { StatusT = 0x03; TooltipT = item.VarName + "异常"; break; } } } //刷新工作模式 modeDigit.UpdateData(arrByteInfo); foreach (Byte item in modeDict.Keys) { if (item == Convert.ToByte(modeDigit.VarValue)) { ModeText = modeDict[item]; break; } } //当前数据时间 DataTime = dr[1].ToString().Trim(); }