Пример #1
0
        private void UpdateCursorResult(double xValue)
        {
            try
            {
                m_chart.BeginUpdate();
                List <BaseWaveChannelToken> channelList = new List <BaseWaveChannelToken>();
                AnnotationXY cursorValueDisplay         = m_chart.ViewXY.Annotations[0];
                float        fTargetYCoord = m_chart.ViewXY.GetMarginsRect().Bottom;
                double       dY;
                m_chart.ViewXY.YAxes[0].CoordToValue(fTargetYCoord, out dY);
                cursorValueDisplay.TargetAxisValues.X = xValue;
                cursorValueDisplay.TargetAxisValues.Y = dY;

                StringBuilder sb            = new StringBuilder();
                int           iSeriesNumber = 1;

                string strChannelStringFormat = "{0}: {1}({2})";
                string strValue      = "";
                bool   bLabelVisible = false;

                foreach (PointLineSeries series in m_chart.ViewXY.PointLineSeries)
                {
                    strValue = "";
                    int index = GetNearestIndex(series, xValue);
                    bLabelVisible = true;
                    if (series.Tag is BaseDivfreChannelToken)
                    {
                        BaseDivfreChannelToken token = series.Tag as BaseDivfreChannelToken;
                        token.CurrentIndex = index;
                        channelList.Add(token);
                        if (index != -1)
                        {
                            var    contract = token.DataContracts[index]; //. series.Points[index].Tag as VInfoTableAMSContract;
                            string unit     = contract.Unit;
                            strValue = string.Format("{0}: {1}({2})|{3}", token.DisplayName, Math.Round(contract.Result ?? 0.0, 3), unit, Math.Round(contract.RPM ?? 0.0, 3));
                        }
                        else
                        {
                            strValue = string.Format(strChannelStringFormat, token.DisplayName, "---", "Unit");
                        }
                    }
                    else if (series.Tag is BaseWaveChannelToken)
                    {
                        BaseWaveChannelToken token = series.Tag as BaseWaveChannelToken;
                        token.CurrentIndex = index;
                        channelList.Add(token);
                        if (index != -1)
                        {
                            var    contract = token.DataContracts[index]; //. series.Points[index].Tag as VInfoTableAMSContract;
                            string unit     = contract.Unit;
                            strValue = string.Format("{0}: {1}({2})", token.DisplayName, Math.Round(contract.Result ?? 0.0, 3), unit);
                        }
                        else
                        {
                            strValue = string.Format(strChannelStringFormat, token.DisplayName, "---", "Unit");
                        }
                    }
                    else if (series.Tag is BaseAlarmChannelToken)
                    {
                        BaseAlarmChannelToken token = series.Tag as BaseAlarmChannelToken;
                        if (index != -1)
                        {
                            var    contract = token.DataContracts[index]; //series.Points[index].Tag as AnInfoTableAMSContract;
                            string unit     = contract.Unit;
                            strValue = string.Format(strChannelStringFormat, token.DisplayName, Math.Round(contract.Result ?? 0.0, 3), unit);
                        }
                        else
                        {
                            strValue = string.Format(strChannelStringFormat, token.DisplayName, "---", "Unit");
                        }
                    }
                    else if (series.Tag is DivFreChannelToken)
                    {
                        DivFreChannelToken token = series.Tag as DivFreChannelToken;
                        if (index != -1)
                        {
                            var    contract = token.DataContracts[index];
                            string unit     = (from p in token.SlotDataContracts where p.RecordLab == contract.RecordLab select p.Unit).FirstOrDefault();

                            strValue = string.Format(strChannelStringFormat, token.DataContracts[index].DescriptionFre, Math.Round(contract.Result ?? 0.0, 3), unit);
                        }
                        else
                        {
                            strValue = string.Format(strChannelStringFormat, token.DataContracts[index].DescriptionFre, "---", "Unit");
                        }
                    }

                    sb.AppendLine(strValue);
                    // series.Title.Text = strValue;
                    iSeriesNumber++;
                }
                sb.AppendLine("Time: " + m_chart.ViewXY.XAxes[0].TimeString(xValue, "yyyy-MM-dd HH:mm:ss"));
                ////Set text
                cursorValueDisplay.Text    = sb.ToString().Trim();
                cursorValueDisplay.Visible = bLabelVisible;
                //Allow chart rendering
                m_chart.EndUpdate();

                if (channelList.Count > 0)
                {
                    viewModel.RaiseTrackChanged(channelList);
                }
            }
            catch (Exception ex)
            {
                EventAggregatorService.Instance.EventAggregator.GetEvent <ThrowExceptionEvent>().Publish(Tuple.Create <string, Exception>("数据回放-趋势趋势-Track", ex));
                m_chart.EndUpdate();
            }
        }
Пример #2
0
        public async Task AddData(ItemTreeItemViewModel item, DateTime start, DateTime end)
        {
            string selectedip = item.ServerIP;

            #region 测点
            if (item != null)
            {
                try
                {
                    WaitInfo = "获取数据中";
                    Status   = ViewModelStatus.Querying;
                    if (item.T_Item.ItemType == (int)ChannelType.WirelessVibrationChannelInfo)
                    {
                        var result = await _databaseComponent.GetHistoryData <D_WirelessVibrationSlot>(selectedip, item.T_Item.Guid, new string[] { "ACQDatetime", "Result", "Unit", "AlarmGrade", "IsValidWave", "RecordLab", "RPM" }, start, end, null, null);

                        result = result.Where(p => p.IsValidWave == true).ToList();
                        if (result == null || result.Count == 0)
                        {
                            return;
                        }
                        BaseDivfreChannelToken channeltoken = new BaseDivfreChannelToken()
                        {
                            DisplayName   = item.BaseAlarmSignal.DeviceItemName,
                            IP            = selectedip,
                            Guid          = item.T_Item.Guid,
                            DataContracts = result.Select(p => ClassCopyHelper.AutoCopy <D_WirelessVibrationSlot, D1_WirelessVibrationSlot>(p) as IBaseAlarmSlot).ToList(),
                        };
                        foreach (var color in DefaultColors.SeriesForBlackBackgroundWpf)
                        {
                            if (!ColorList.Contains(color))
                            {
                                ColorList.Add(color);
                                channeltoken.SolidColorBrush = new SolidColorBrush(color);
                                break;
                            }
                        }
                        amsReplayVM.AddChannel(channeltoken);
                        timeDomainVM.AddChannel(channeltoken);
                        frequencyDomainVM.AddChannel(channeltoken);
                        powerSpectrumVM.AddChannel(channeltoken);
                        powerSpectrumDensityVM.AddChannel(channeltoken);
                        alarmPointTrendVM.AddChannel(channeltoken);
                        orthoDataVM.AddChannel(channeltoken);

                        offDesignConditionVM.AddChannel(channeltoken);
                    }
                    else if (item.T_Item.ItemType == (int)ChannelType.WirelessScalarChannelInfo)
                    {
                        var result = await _databaseComponent.GetHistoryData <D_WirelessScalarSlot>(selectedip, item.T_Item.Guid, new string[] { "ACQDatetime", "Result", "Unit", "AlarmGrade" }, start, end, null, null);

                        if (result == null || result.Count == 0)
                        {
                            return;
                        }
                        BaseAlarmChannelToken channeltoken = new BaseAlarmChannelToken()
                        {
                            DisplayName   = item.BaseAlarmSignal.DeviceItemName,
                            IP            = selectedip,
                            Guid          = item.T_Item.Guid,
                            DataContracts = result.Select(p => ClassCopyHelper.AutoCopy <D_WirelessScalarSlot, D1_WirelessScalarSlot>(p) as IBaseAlarmSlot).ToList(),
                        };
                        foreach (var color in DefaultColors.SeriesForBlackBackgroundWpf)
                        {
                            if (!ColorList.Contains(color))
                            {
                                ColorList.Add(color);
                                channeltoken.SolidColorBrush = new SolidColorBrush(color);
                                break;
                            }
                        }
                        amsReplayVM.AddChannel(channeltoken);
                        timeDomainVM.IsVisible      = false;
                        frequencyDomainVM.IsVisible = false;
                    }
                }
                catch (Exception ex)
                {
                    _eventAggregator.GetEvent <ThrowExceptionEvent>().Publish(Tuple.Create <string, Exception>("数据回放-测点查询", ex));
                }
                finally
                {
                    Status = ViewModelStatus.None;
                }
            }
            #endregion
        }