Example #1
0
        /// <summary>
        /// データをセットする
        /// </summary>
        /// <param name="dataList">データ</param>
        public void SetData(SampleData[] dataList)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke((MethodInvoker)delegate() { SetData(dataList); });
                return;
            }

            try
            {
                if (dataList == null)
                {
                    throw new ArgumentNullException("dataList");
                }

                var graphData = new List<double[]>();

                var data = dataList.Last();

                var count = 0;

                foreach (ChannelData ch in data.ChannelDatas)
                    if (ch != null && ch.Position != 0 && ch.DataValues != null)
                    {
                        count = ((Value_Mode2)ch.DataValues).Values.Length;
                        break;
                    }

                for (int i = 0; i < count; i++)
                {
                    var chData = new double[11];
                    chData[0] = i;
                    for (int j = 1; j < 11; j++)
                    {
                        if (data.ChannelDatas[j] != null)
                        {
            #if TEST_INCLINE_3D
                            if (j == 3)
                                chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i];
                            else if (j == 1)
                                chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i] + 500;
                            else if (j == 2)
                                chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i] - 100;
                            else
                                chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i];
            #else
                            chData[j] = (double)((Value_Mode2)data.ChannelDatas[j].DataValues).Values[i];
                            //if (j == 2)
                            //    chData[j] += 700;
                            //else if (j == 1)
                            //    chData[j] += 100;

            #endif
                            //if (j != 11 && this.analyzeData.ChannelsSetting.ChannelSettingList[j - 1].ChKind == ChannelKindType.R)
                            //    chData[j] *= (double)SystemSetting.SystemConfig.ValueRate_3D_R;
                        }
                    }
                    graphData.Add(chData);
                }

                if (graphData.Count > 0)
                {
                    this.graph3DViewer.ReadData(graphData);
                }
            }
            catch (Exception ex)
            {
                ShowErrorMessage(ex);
            }
        }
Example #2
0
        /// <summary>
        /// 測定データをセットする(測定時用)
        /// </summary>
        /// <param name="dataList">測定データ</param>
        /// <param name="minValueX">X軸最小値</param>
        /// <remarks>Called from Measurement</remarks>
        public void SetMeasureData(SampleData[] dataList, decimal minValueX)
        {
            //if (this.InvokeRequired)
            //{
            //    this.BeginInvoke((MethodInvoker)delegate() { SetMeasureData(dataList, minValueX); });
            //    return;
            //}

            try
            {
                if (dataList == null)
                {
                    throw new ArgumentNullException("dataList");
                }

                // グラフ未設定の場合は設定する
                if (this.measSetting == null)
                {
                    SetGraphSetting();
                }

                var graphData = new List<double[]>();
                var count = 0;

                if (this.measSetting.Mode == 2)
                {
                    var data = dataList.Last();

                    foreach (ChannelData ch in data.ChannelDatas)
                    {
                        if (ch != null && ch.Position != 0 && ch.DataValues != null)
                        {
                            count = ((Value_Mode2)ch.DataValues).Values.Length;
                            break;
                        }
                    }

                    SetMode2GraphInfo(count, 1);
                    var inc = this.GraphInfo.IncrementX;

                    var chSetting = (this.IsMeasure) ? SystemSetting.ChannelsSetting : this.AnalyzeData.ChannelsSetting;

                    if (chSetting != null && chSetting.ChannelMeasSetting != null)
                    {
                        minValueX = chSetting.ChannelMeasSetting.Degree1;
                    }

                    ////間引きステップ
                    ////500サンプルよりも多い場合は間引きし、500サンプルとなるようにする。
                    //double maxdatasize = 500d;
                    //double stepoffset = (double)count / maxdatasize;
                    //double stepcount = 0d;
                    //if (stepoffset < 1)
                    //    stepoffset = 1;

                    ///set maxdata size and shotcount (in this case maxdatasize 500 same as stepoffset)
                    //SetMode2GraphInfo((int)maxdatasize, 1);
                    //var inc = this.GraphInfo.IncrementX;
                    //var counter = 0;
                    //var chSetting = (this.IsMeasure) ? SystemSetting.ChannelsSetting : this.AnalyzeData.ChannelsSetting;

                    //if (chSetting != null && chSetting.ChannelMeasSetting != null)
                    //{
                    //    minValueX = chSetting.ChannelMeasSetting.Degree1;
                    //}

                    //for (int i = 0; i < count; i += (int)stepcount)
                    for (int i = 0; i < count; i++)
                    {
                        var chData = new double[11];
                        //chData[0] = minValueX + (counter * inc);
                        chData[0] = (double)minValueX + (i * inc);

                        if (this.chIndexList != null)
                        {
                            for (int j = 0; j < 10; j++)
                            {
                                if (this.chIndexList[j] != null)
                                {
                                    if (this.chIndexList[j].Index >= 0)
                                    {
                                        var t = data.ChannelDatas[this.chIndexList[j].Index].DataValues.GetType();
                                        if (t == typeof(Value_Standard))
                                        {
                                            // 回転数
                                            chData[j + 1] = (double)((Value_Standard)data.ChannelDatas[this.chIndexList[j].Index].DataValues).Value;
                                        }
                                        else if (t == typeof(Value_Mode2))
                                        {
                                            chData[j + 1] = (double)((Value_Mode2)data.ChannelDatas[this.chIndexList[j].Index].DataValues).Values[i];
                                        }
                                    }
                                }
                            }
                            graphData.Add(chData);
                        }

                        ////次回ステップ数を算出
                        //stepcount = (stepcount - Math.Floor(stepcount)) + stepoffset;
                        //counter++;

                    }
                }
                else
                {
                    ////間引きステップ
                    ////1000サンプルよりも多い場合は間引きし、500サンプルとなるようにする。
                    //double stepoffset = (double)count / 500d;
                    //double stepcount = 0d;
                    //if (stepoffset < 1)
                    //    stepoffset = 1;

                    count = dataList.Length;
                    //for (int i = 0; i < count; i += (int)stepcount)
                    for (int i = 0; i < count; i++)
                    {
                        var chData = new double[11];

                        if (this.measSetting.Mode == 1)
                        {
                            chData[0] = (double)(minValueX + i + 1);
                        }
                        else if (this.measSetting.Mode == 3)
                        {
                            // Mode3は時間をmsで算出する。[us]の場合もあるので,小数点以下も有効とする。
                            chData[0] = (double)((double)(minValueX + i) * (this.measSetting.SamplingTiming_Mode3 / 1000.0));
                        }

                        for (int j = 0; j < chIndexList.Length; j++)
                        {
                            if (this.chIndexList[j].Index >= 0)
                            {
                                var t = dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues.GetType();
                                if (t == typeof(Value_Standard))
                                {
                                    chData[j + 1] = (double)((Value_Standard)dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues).Value;
                                }
                                else if (t == typeof(Value_MaxMin))
                                {
                                    if (this.chIndexList[j].IsMaxCh)
                                    {
                                        chData[j + 1] = (double)((Value_MaxMin)dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues).MaxValue;
                                    }
                                    else
                                    {
                                        chData[j + 1] = (double)((Value_MaxMin)dataList[i].ChannelDatas[this.chIndexList[j].Index].DataValues).MinValue;
                                    }
                                }
                            }
                        }
                        graphData.Add(chData);

                        //次回ステップ数を算出
                        //stepcount = (stepcount - Math.Floor(stepcount)) + stepoffset;

                    }
                }

                if (graphData.Count > 0)
                {
                    if (this.InvokeRequired)
                    {
                        this.BeginInvoke((MethodInvoker)delegate() { this.graphViewer.ReadData(graphData); });
                        this.BeginInvoke((MethodInvoker)delegate() { this.graphViewer.CreateGraph(); });
                    }
                    else
                    {
                        this.graphViewer.ReadData(graphData);
                        this.graphViewer.CreateGraph();
                    }
                }
            }
            catch (Exception ex)
            {
                ShowErrorMessage(ex);
            }
        }
Example #3
0
        /// <summary>
        /// 測定データをセットする
        /// </summary>
        /// <param name="dataList">測定データ</param>
        public void SetMeasureData(SampleData[] dataList)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke((MethodInvoker)delegate() { SetMeasureData(dataList); });
                return;
            }

            try
            {
                if (dataList == null)
                {
                    throw new ArgumentNullException("dataList");
                }

                var data = dataList.Last();
                SetData(data, 0);
            }
            catch (Exception ex)
            {
                ShowErrorMessage(ex);
            }
        }