Exemplo n.º 1
0
		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;
		}
Exemplo n.º 2
0
		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;
		}