public MainWindow() { InitializeComponent(); SD1 = new SampleDataManager(DATA_NAME1); // SD2 = new SampleDataManager2(DATA_NAME2); file1 = CsUtilities.AssemblyDirectory + "\\file1.xml"; file2 = CsUtilities.AssemblyDirectory + "\\file2.xml"; }
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 }); }); }
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; }
public void Deserialize_Data_OnlyHeader(string xmlFilename) { sampleDatas = new SampleDataManager(); sampleDatas.FolderPath = System.IO.Path.GetDirectoryName(xmlFilename); sampleDatas.DeserializeOnlyHeader(); }
/// <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); }
/// <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; }
/// <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; }