private bool getMeasure(int samplingCount,bool forStability) { bool result = false; if (_continuousSamplingCount == 0) { InitializeSamplingDatas(); //データ件数表示の初期化 samplingCount_lbl.Text = _continuousSamplingCount.ToString(); samplingCount_lbl.Refresh(); } //タイムアウト用タイマースタート System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); //List<int> sampParam = new List<int>{int.Parse(_settings._data._measureDataCount),int.Parse(_settings._data._waitTime)}; List<int> sampParam = new List<int>{1000,int.Parse(_settings._data._waitTime)}; //サンプリング開始 if (_machine.StartSampling(sampParam)) { } else { result = false; } long time = 0; //装置の応答待ち if (_machine.GetStatus() != true) { while (_machine._sampStatus != Machine.SamplingStatus.FINISH) { _machine.GetStatus(); if (sw.ElapsedMilliseconds > 10000) { result = true; } } } time = sw.ElapsedMilliseconds; //データの取得 //if (_machine.GetSamplingData(0, samplingCount -1)) { if (_machine.GetSamplingData(0, 1000 -1)) { //sigref計算 _dp = new DataProcessor(_machine, _settings); _dp.Main(); //生データを入れる List<List<SamplingResult>> allSamplingResult = _dp._allSamplingResult; List<List<double>> allGammaList = _dp._allGammaList; List<double> allBslList = _dp._allBslList; //それぞれの平均結果を取得 _md = new MeasureData(_settings); _md.GetSamplingResult(allSamplingResult,samplingCount); _md.GetGammaResult(allGammaList,samplingCount); //GetBslResult() -> BSLは平均されたガンマデータを元に作成するので、引数は必要ないけど、生データはほしい _md.GetBslResult(allBslList); //測定の付随データの整理 //現在の温度情報 _md.SetTemp(GetTempDisplay()); ////最終フォーマットのデータ生成 //ProductDataFormat pdf = new ProductDataFormat(_settings, _temp_tbx); //pdf.SetDatas(_dp._avgSamplingList, _dp._avgGammaList, estimateData); //_pdfList.Add(pdf); result = true; } else { result = false; } //飽和チェック string overflowMessage = CheckOverFlow(45000, 55000); if (overflowMessage.IndexOf("飽和") != -1) { log_tbx.Text = "入力が飽和したため、測定は正しく終了しませんでした。"; log_tbx.Refresh(); MessageBox.Show(overflowMessage); result = false; } //データの取得が問題なければ、かつ安定性測定でなければ if (result == true) { if (!forStability) { //_continuousSamplingCount++; //samplingCount_lbl.Text = (_continuousSamplingCount).ToString(); //ファイル出力 CsvMaker csv = new CsvMaker(); //string filename = OpenFileSetDialog("MeasureData.csv"); if (csv.MakeMeasureDataFile(_md, _user._fileDirectory, _user.GetMeasureDataCount()) == false) { MessageBox.Show("結果をファイルに書き込む事ができませんでした。\r\nファイルが開かれていないか確認してください。"); } } } return result; }
private bool getStability() { if (_continuousSamplingCount == 0) { InitializeSamplingDatas(); } //オートゲインを取得 SetLaserAutoOffsetGain(false); //タイムアウト用タイマースタート System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); List<int> SampParam = new List<int>{1000,int.Parse(_settings._data._waitTime)}; //サンプリング開始 if (_machine.StartSampling(SampParam)) { } else { return false; } //装置の応答待ち if (_machine.GetStatus() != true) { while (_machine._sampStatus != Machine.SamplingStatus.FINISH) { _machine.GetStatus(); if (sw.ElapsedMilliseconds > 10000) { return false; } } } //データの取得 if (_machine.GetSamplingData(0, 999)) { //sigref計算 _dp = new DataProcessor(_machine, _settings); _dp.Main(); //データ用変数確保 //_sampDataStorageForRaw = new List<List<SamplingResult>>(); //生データを入れる //_sampDataStorageBeforeAvg = _dp._allSamplingResult; List<List<SamplingResult>> allSamplingResult = _dp._allSamplingResult; List<List<double>> allGammaList = _dp._allGammaList; List<double> allBslList = _dp._allBslList; //それぞれを移動平均にかける MovingAverage mvAvg = new MovingAverage(); List<List<SamplingResult>> mvAvg_samplingResult = mvAvg.GetSamplingResult(allSamplingResult, int.Parse(_settings._data._movingAverageCount)); List<List<double>> mvAvg_gamma = mvAvg.GetGammaResult(allGammaList,int.Parse(_settings._data._movingAverageCount)); List<double>mvAvg_bsl = mvAvg.GetBslResult(allBslList, int.Parse(_settings._data._movingAverageCount)); //それぞれの安定性を採る _stb = new Stability(_settings); _stb.GetSamplingResult(mvAvg_samplingResult); _stb.GetGammaResult(mvAvg_gamma); _stb.GetBslResult(mvAvg_bsl); //校正係数の取得 _calib = new Calibrate(allSamplingResult, _settings); _stb._calib = _calib._result; //出力用生データのセット _stb.SetRawData(allSamplingResult, allGammaList, allBslList); } else { return false; } return true; }