Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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();
        }