private void ZeroCalibrationHandler(object sender, EventArgs eventArgs) { if (_adcList.Count < _zeroCalibrationCount) { _adcList.Add((double[])CurrAdcVals.Clone()); } else { ParseDone -= ZeroCalibrationHandler; var zeroVals = new double[4]; for (int i = 0; i < zeroVals.Count(); i++) { zeroVals[i] = _adcList.Average(doubles => doubles[i]); if (_startupCalib) { var w = 0.1; var koef_new = w / zeroVals[i]; var koef_old = w / MainConfig.ZeroAdcVals[i]; var offset_percent = (100 * koef_new) / koef_old; offset_percent = (100 - offset_percent) * 10; WeightKoefs[i] += (WeightKoefs[i] * offset_percent) / 100; } } if (!_startupCalib) { MainConfig.Update(null, zeroVals); } zeroAdcVals = zeroVals; if (CalibrationDone != null) { CalibrationDone.Invoke(null, null); } _zeroCorrection = true; _startupCalib = false; _adcList.Clear(); } //------------ }
private void WeightCalibrationHandler(object o, EventArgs eventArgs) { if (_adcList.Count < _calibrationParams.EntryCount) { _adcList.Add((double[])CurrAdcVals.Clone()); } else { ParseDone -= WeightCalibrationHandler; var aver = _adcList.Average(val => val[_calibrationParams.TenzNumber]); double koef = _calibrationParams.Weight / aver; WeightKoefs[_calibrationParams.TenzNumber] = koef; if (CalibrationDone != null) { CalibrationDone.Invoke(null, null); } _adcList.Clear(); _calibrationParams = null; ExchangeConfig.Period = _periodBuf; } }
private void FastWeightCalibrationHandler(object o, EventArgs eventArgs) { if (_adcList.Count < _calibrationParams.EntryCount) { _adcList.Add((double[])CurrAdcVals.Clone()); } else { ParseDone -= FastWeightCalibrationHandler; for (int i = 0; i < 4; i++) { var aver = _adcList.Average(val => val[i]); double koef = _calibrationParams.Weight / aver; WeightKoefs[i] = koef; } if (CalibrationDone != null) { CalibrationDone.Invoke(null, null); } _adcList.Clear(); _calibrationParams = null; } }