示例#1
0
        public MainWindow()
        {
            InitializeComponent();

            SD1 = new SampleDataManager(DATA_NAME1);
//			SD2 = new SampleDataManager2(DATA_NAME2);

            file1 = CsUtilities.AssemblyDirectory + "\\file1.xml";
            file2 = CsUtilities.AssemblyDirectory + "\\file2.xml";
        }
示例#2
0
        public SampleDataModule(SampleDataManager manager) : base("/client")
        {
            Get("/counter", args => new { count = manager.ClientList.Count });

            Get("/", arg => JsonConvert.SerializeObject(manager.ClientList));

            Post("/", args =>
            {
                var entity = this.Bind <ClientCriteria>();
                entity.Id  = manager.ClientList.Count;
                return(new { Id = manager.ClientList.Count });
            });
        }
示例#3
0
        public bool Execute()
        {
            bool bRet = false;
            if (calcinitFlag == false || calc == null)
            {
                return bRet;
            }

            int iconut = 0;
            if (sampleDatas == null)
            {
                sampleDatas = new SampleDataManager();
                if (sampleDatas == null)
                {
                    return bRet;
                }
                sampleDatas.FolderPath = this.CurFilePath;

                //1万件分読み込んでおく
                sampleDatas.DeserializeData(0, 10000);
            }

            int start = 0;
            int Calcstart = 0;
            iconut = sampleDatas.SamplesCount;
            try
            {
                for (int i = 0; i < iconut; i++)
                {
                    SampleData x = (SampleData)sampleDatas.GetRange(start, 1)[0];

                    for (int j = 0; j < x.ChannelDatas.Length; j++)
                    {
                        if (x.ChannelDatas[j].DataValues.GetType() == typeof(Value_Standard))
                        {
                            valVariable[j] = (double)((Value_Standard)x.ChannelDatas[j].DataValues).Value;
                        }
                        else if (x.ChannelDatas[j].DataValues.GetType() == typeof(Value_Mode2))
                        {
                            valVariable[j] = 0;// (double)((Value_Mode2)x.ChannelDatas[j].DataValues).Values;
                        }
                        else if (x.ChannelDatas[j].DataValues.GetType() == typeof(Value_MaxMin))
                        {
                            valVariable[j] = (double)((Value_MaxMin)x.ChannelDatas[j].DataValues).MinValue;
                        }

                    }

                    //演算実行
                    if (calc.Execute(ref strErrorMessage) < 0)
                    {
                        //error
                        MessageBox.Show(strErrorMessage + "\n", "演算実行", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                    }

                    Calcstart = 0;
                    for (int j = 0; j < iCalcIndex.Length; j++)
                    {
                        if (iCalcIndex[j] > 0)
                        {
                            int idx = iCalcIndex[j];

                            if (x.ChannelDatas[idx].DataValues.GetType() == typeof(Value_Standard))
                            {
                                ((Value_Standard)x.ChannelDatas[idx].DataValues).Value = (decimal)valCalcResult[Calcstart];
                            }
                            else if (x.ChannelDatas[idx].DataValues.GetType() == typeof(Value_Mode2))
                            {
                                //((Value_Standard)x.ChannelDatas[idx].DataValues).Value = (decimal)valCalcResult[Calcstart];
                            }
                            else if (x.ChannelDatas[idx].DataValues.GetType() == typeof(Value_MaxMin))
                            {
                                ((Value_MaxMin)x.ChannelDatas[idx].DataValues).MinValue = (decimal)valCalcResult[Calcstart];
                            }
                            Calcstart++;

                        }
                    }

                    start++;
                }

            }
            catch (Exception ex)
            {
                ShowErrorMessage(ex);
            }
            return bRet;
        }
示例#4
0
        public void Deserialize_Data_OnlyHeader(string xmlFilename)
        {
            sampleDatas = new SampleDataManager();
            sampleDatas.FolderPath = System.IO.Path.GetDirectoryName(xmlFilename);

            sampleDatas.DeserializeOnlyHeader();
        }
示例#5
0
        /// <summary>
        /// データのデシリアライズ
        /// </summary>
        /// <param name="xmlFilename"></param>
        public void Deserialize_Data_forInit(string xmlFilename)
        {
            sampleDatas = new SampleDataManager();
            sampleDatas.FolderPath = System.IO.Path.GetDirectoryName(xmlFilename);

            //1万件分読み込んでおく
            sampleDatas.DeserializeData(0, 10000);

        }
示例#6
0
        /// <summary>
        /// 範囲取得
        /// </summary>
        /// <param name="_startindex">開始位置</param>
        /// <param name="length">取得長さ</param>
        /// <param name="sampleDatas">サンプルデータ格納領域</param>
        /// <param name="calcDatas">演算データ測定領域</param>
        /// <returns>実際の取得サイズ</returns>
        public int GetRange(int _startindex, int length , out List<SampleData> sampleDatas , out List<CalcData> calcDatas )
        {
            //データ取得
            sampleDatas = this.SampleDatas.GetRange(_startindex, length);

            #region モード1時のオフセット設定
            ////モード1時のオフセット設定
            //if (AnalyzeData_Parent.MeasureSetting.Mode == (int)ModeType.MODE1)
            //{
            foreach (SampleData sdata in sampleDatas)
            {
                //チャンネル分ループ
                for (int i = 1; i < sdata.ChannelDatas.Length; i++)
                {
                    if (sdata.ChannelDatas[i] == null) continue;
                    if (sdata.ChannelDatas[i].DataValues == null) continue;

                    #region モード1時のオフセット対応
                    //モード1 で チャンネルがBかRならば
                    bool bOffsetCalc = (AnalyzeData_Parent.MeasureSetting.Mode == (int)ModeType.MODE1) &&
                                        (AnalyzeData_Parent.ChannelsSetting.ChannelSettingList[i - 1].ChKind == ChannelKindType.B
                                            || AnalyzeData_Parent.ChannelsSetting.ChannelSettingList[i - 1].ChKind == ChannelKindType.R);

                    #endregion


                    ////チャンネルがBかRならば
                    //if (AnalyzeData_Parent.ChannelsSetting.ChannelSettingList[i - 1].ChKind == ChannelKindType.B
                    //    || AnalyzeData_Parent.ChannelsSetting.ChannelSettingList[i - 1].ChKind == ChannelKindType.R)
                    //{
                    //TagNo1でチェック
                    if (AnalyzeData_Parent.TagChannelRelationSetting.RelationList[i].TagNo_1 != -1)
                    {
                        int tmpTagNo = AnalyzeData_Parent.TagChannelRelationSetting.RelationList[i].TagNo_1;

                        //ノーマルデータ
                        if (sdata.ChannelDatas[i].DataValues is Value_Standard)
                        {
                            if (bOffsetCalc)
                                ((Value_Standard)sdata.ChannelDatas[i].DataValues).Value -= AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).StaticZero;

                            // 桁切り計算
                            ((Value_Standard)sdata.ChannelDatas[i].DataValues).Value =
                                (decimal)ToRoundDown((double)((Value_Standard)sdata.ChannelDatas[i].DataValues).Value, AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).Point);

                        }
                        //MaxMinデータ
                        else if (sdata.ChannelDatas[i].DataValues is Value_MaxMin)
                        {
                            if (bOffsetCalc)
                            {
                                //MaxとMinとの差異が5umの場合MaxにMinを入れる(差を見せない)
                                if (((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MaxValue - ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MinValue <= 5)
                                    ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MaxValue = ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MinValue;

                                ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MaxValue -= AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).StaticZero;
                            }

                            // 桁切り計算
                            ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MaxValue =
                                (decimal)ToRoundDown((double)((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MaxValue, AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).Point);

                        }
                        //Mode2データ
                        else if (sdata.ChannelDatas[i].DataValues is Value_Mode2)
                        {
                            for (int sampleindex = 0; sampleindex < ((Value_Mode2)sdata.ChannelDatas[i].DataValues).Values.Length; sampleindex++)
                            {
                                ((Value_Mode2)sdata.ChannelDatas[i].DataValues).Values[sampleindex] =
                                    (decimal)ToRoundDown((double)((Value_Mode2)sdata.ChannelDatas[i].DataValues).Values[sampleindex], AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).Point);
                            }
                        }
                    }

                    //TagNo2 でチェック
                    if (AnalyzeData_Parent.TagChannelRelationSetting.RelationList[i].TagNo_2 != -1)
                    {
                        int tmpTagNo = AnalyzeData_Parent.TagChannelRelationSetting.RelationList[i].TagNo_2;

                        //ノーマルならば使わない
                        if (sdata.ChannelDatas[i].DataValues is Value_Standard ||
                            sdata.ChannelDatas[i].DataValues is Value_Mode2)
                        {
                        }
                        //MaxMinでデータを使う
                        else
                        {
                            if (bOffsetCalc)
                                ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MinValue -= AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).StaticZero;

                            // 桁切り計算
                            ((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MinValue =
                                (decimal)ToRoundDown((double)((Value_MaxMin)sdata.ChannelDatas[i].DataValues).MinValue, AnalyzeData_Parent.DataTagSetting.GetTag(tmpTagNo).Point);

                        }
                    }
                }
            }

            //}

            //}
            #endregion

            //演算処理
            calcDatas = this.CalcDatas.GetRange(_startindex, length, sampleDatas);


            //次回データの取得を別スレッドで実施。
            //モード2のみ
            if (this.SampleDatas.HeaderData.Mode == ModeType.MODE2)
            {
                System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(GetNextRange));
                th.Start(new int[] { _startindex + 1, 1 });
            }

            return sampleDatas.Count;
        }
示例#7
0
        /// <summary>
        /// 計測前初期化処理
        /// </summary>
        /// <param name="ch_setting"></param>
        /// <param name="meas_setting"></param>
        /// <param name="folderPath"></param>
        /// <remarks>
        /// 計測前処理として、内部のSampleDatasのHeader情報を書き込み。
        /// 自動保存されるように設定する。
        /// </remarks>
        public void InitializeforMeasure(ChannelsSetting ch_setting , MeasureSetting meas_setting , string folderPath)
        {
            sampleDatas = new SampleDataManager();

            sampleDatas.FolderPath = folderPath;

            sampleDatas.HeaderData = new SampleDataHeader();
            //モードの設定
            sampleDatas.HeaderData.Mode = (ModeType)meas_setting.Mode;

            //チャンネルデータの設定
            SampleDataHeader.CHANNELDATATYPE[] channeldatatypes = new SampleDataHeader.CHANNELDATATYPE[11];

            //回転数分
            switch (sampleDatas.HeaderData.Mode)
            {
                case ModeType.MODE3:
                    channeldatatypes[0] = SampleDataHeader.CHANNELDATATYPE.NONE;  
                    break;
                default:
                    channeldatatypes[0] = SampleDataHeader.CHANNELDATATYPE.SINGLEDATA;
                    break;
            }

            //他チャンネル
            for(int i = 0 ; i < ch_setting.ChannelSettingList.Length; i++)
            {
                if (ch_setting.ChannelSettingList[i].ChKind != ChannelKindType.N
                    && meas_setting.MeasTagList[i] != -1)
                {
                    switch (sampleDatas.HeaderData.Mode)
                    {
                        case ModeType.MODE1:
                            if (ch_setting.ChannelSettingList[i].ChKind == ChannelKindType.R &&
                                ch_setting.ChannelSettingList[i].Mode1_Trigger == Mode1TriggerType.MAIN)
                                channeldatatypes[i+1] = SampleDataHeader.CHANNELDATATYPE.DOUBLEDATA;
                            else
                                channeldatatypes[i+1] = SampleDataHeader.CHANNELDATATYPE.SINGLEDATA;

                            break;
                        case ModeType.MODE2:
                        case ModeType.MODE3:
                            channeldatatypes[i+1] = SampleDataHeader.CHANNELDATATYPE.SINGLEDATA;
                            break;
                    }
                }
                else
                {
                    channeldatatypes[i+1] = SampleDataHeader.CHANNELDATATYPE.NONE;                  
                }
            }

            sampleDatas.HeaderData.ChannelsDataType = channeldatatypes;

            //自動保存の開始
            sampleDatas.AutoWriteFlag = true;
        }