private void button2_Click(object sender, EventArgs e) { try { checkBoxDoScale.Checked = false; transformation.Clear(); Transformation.TCondition t1 = new Transformation.TCondition(); Transformation.TCondition t2 = new Transformation.TCondition(); t1.Result = 0; t1.Signal = 0; t2.Result = 65535; t2.Signal = 65535; transformation.Insert(t1); transformation.Insert(t2); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// ошибка /// </summary> /// <param name="Condition"></param> /// <param name="Error"></param> private void transformation_OnError(Transformation.TCondition Condition, Transformation.TypeError Error) { switch (Error) { case Transformation.TypeError.TransformationError: if (transformation.Table.Count > 2) { transformation.Remove(Condition); MessageBox.Show(this, "Во время вычисления коэффициентов афинного преобразования возникла ошибка. Строка с ошибкой удалена", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { button2_Click(null, null); MessageBox.Show(this, "Во время вычисления коэффициентов афинного преобразования возникла ошибка. Таблица очищена", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Error); } break; default: break; } ShowCalibrationTableInDataGrid(transformation); ShowCalibrationTableInGraphics(transformation); }
/// <summary> /// Выбрать калибруемый параметр /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void selectParameter_Click(object sender, EventArgs e) { ResultsForm r_frm = new ResultsForm(app); if (_parameter != null) { r_frm.Position = _parameter.Identifier; } if (r_frm.ShowDialog(this) == DialogResult.OK) { textBoxSelectedParameter.Tag = r_frm.SelectedParameter; textBoxSelectedParameter.Text = r_frm.SelectedParameter.Name; _parameter = r_frm.SelectedParameter; checkBoxDoScale.Checked = false; transformation.Clear(); foreach (Transformation.TCondition val in _parameter.Transformation.Table) { Transformation.TCondition _v = new Transformation.TCondition(); _v.Multy = val.Multy; _v.Result = val.Result; _v.Shift = val.Shift; _v.Signal = val.Signal; transformation.Insert(_v); } //transformation.Arg[0].Index = first.Index; } }
public AddTransformationForm(SGT.SgtApplication _app) { app = _app; app.Commutator.onUpdated += new CommutatorEventHandler(Converter_OnComplete); InitializeComponent(); transformation = new Transformation(); transformation.OnInsert += new Transformation.TConditionEventHandle(transformation_OnInsert); transformation.OnEdit += new Transformation.TConditionEventHandle(transformation_OnEdit); transformation.OnRemove += new Transformation.TConditionEventHandle(transformation_OnRemove); transformation.OnClear += new EventHandler(transformation_OnClear); transformation.OnError += new Transformation.ErrorEventHandle(transformation_OnError); transformation.OnExist += new Transformation.TConditionEventHandle(transformation_OnExist); Transformation.TCondition t1 = new Transformation.TCondition(); Transformation.TCondition t2 = new Transformation.TCondition(); t1.Result = 0; t1.Signal = 0; t2.Result = 65535; t2.Signal = 65535; transformation.Insert(t1); transformation.Insert(t2); first = new Argument(); second = new Argument(); calibrationGraphic.CalculateScale(); t_inserter = new InsertToText(InserterText); /* * media = new Media(); * * media.Args[0].Index = 0; * media.Args[1].Index = 1; * * med = new Float[2]; * for (int i = 0; i < med.Length; i++) * { * med[i] = new Float(); * } */ }
private Parameter _parameter; // калибруемый параметр #endregion Fields #region Constructors public AddTransformationForm(SKC.Application _app) { app = _app; app.Commutator.onParameterUpdated += new EventHandler(Converter_OnComplete); InitializeComponent(); transformation = new Transformation(); transformation.OnInsert += new Transformation.TConditionEventHandle(transformation_OnInsert); transformation.OnEdit += new Transformation.TConditionEventHandle(transformation_OnEdit); transformation.OnRemove += new Transformation.TConditionEventHandle(transformation_OnRemove); transformation.OnClear += new EventHandler(transformation_OnClear); transformation.OnError += new Transformation.ErrorEventHandle(transformation_OnError); transformation.OnExist += new Transformation.TConditionEventHandle(transformation_OnExist); Transformation.TCondition t1 = new Transformation.TCondition(); Transformation.TCondition t2 = new Transformation.TCondition(); t1.Result = 0; t1.Signal = 0; t2.Result = 65535; t2.Signal = 65535; transformation.Insert(t1); transformation.Insert(t2); first = new Argument(); second = new Argument(); calibrationGraphic.CalculateScale(); t_inserter = new InsertToText(InserterText); /* media = new Media(); media.Args[0].Index = 0; media.Args[1].Index = 1; med = new Float[2]; for (int i = 0; i < med.Length; i++) { med[i] = new Float(); } */ }
/// <summary> /// Добавляем точку /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void insertPoint_Click(object sender, EventArgs e) { try { Transformation.TCondition t_condition = new Transformation.TCondition(); t_condition.Signal = double.Parse(textBoxTotablePhysic.Text); t_condition.Result = double.Parse(textBoxToTableCalibrated.Text); transformation.Insert(t_condition); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// Удаляем точку /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void removePoint_Click(object sender, EventArgs e) { try { if (dataGridViewCalibrationTable.Rows.Count > 2) { int selectedRow = dataGridViewCalibrationTable.SelectedCells[0].RowIndex; Transformation.TCondition t_condition = transformation.Table[selectedRow]; transformation.Remove(t_condition); } else { MessageBox.Show(this, "В таблице не может менее двух точек", "Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch { } }
/// <summary> /// Изменили точку /// </summary> /// <param name="Condition"></param> private void transformation_OnEdit(Transformation.TCondition Condition) { ShowCalibrationTableInDataGrid(transformation); ShowCalibrationTableInGraphics(transformation); }
/// <summary> /// точка уже имеется в таблице /// </summary> /// <param name="Condition"></param> private void transformation_OnExist(Transformation.TCondition Condition) { MessageBox.Show(this, "Добавляемая точка имеется в таблице калибровки", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); }
/// <summary> /// Редактировать формулу /// </summary> /// <param name="Selected">Выборанный элемент в сиписке</param> /// <param name="Edit">Редактируемая формула</param> private void EditFormula(ListViewItem Selected, Formula Edit) { switch (Edit.Type) { case FormulaType.Constant: AddConstantForm const_frm = new AddConstantForm(app); const_frm.Value = Edit.Macros.Value; const_frm.Comment = Edit.Macros.Description; const_frm.checkBox1.Visible = false; const_frm.Number = Edit.Position; if (const_frm.ShowDialog(this) == DialogResult.OK) { Edit.Position = const_frm.Number; Edit.Macros.Value = const_frm.Value; Edit.Macros.Description = const_frm.Comment; UpdateFormula(Selected, Edit); } break; case FormulaType.Assignment: AddAssignmentForm assignment_frm = new AddAssignmentForm(app); assignment_frm.Comment = Edit.Macros.Description; assignment_frm.Number = Edit.Position; assignment_frm.Position = Edit.Macros.Args[0].Index; assignment_frm.checkBox1.Visible = false; if (assignment_frm.ShowDialog(this) == DialogResult.OK) { Edit.Position = assignment_frm.Number; Edit.Macros.Args[0].Index = assignment_frm.Position; Edit.Macros.Args[0].Source = DataSource.Signals; Edit.Macros.Description = assignment_frm.Comment; UpdateFormula(Selected, Edit); } break; case FormulaType.Summa: AddSummaNewForm summa_frm = new AddSummaNewForm(app); summa_frm.FirstArg = Edit.Macros.Args[0]; summa_frm.SecondtArg = Edit.Macros.Args[1]; summa_frm.Comment = Edit.Macros.Description; summa_frm.checkBox1.Visible = false; summa_frm.Number = Edit.Position; if (summa_frm.ShowDialog(this) == DialogResult.OK) { if (summa_frm.FirstArg != null && summa_frm.SecondtArg != null) { Edit.Position = summa_frm.Number; Edit.Macros.Args[0] = summa_frm.FirstArg; Edit.Macros.Args[1] = summa_frm.SecondtArg; Edit.Macros.Description = summa_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Difference: AddDifferenceNewForm difference_frm = new AddDifferenceNewForm(app); difference_frm.FirstArg = Edit.Macros.Args[0]; difference_frm.SecondtArg = Edit.Macros.Args[1]; difference_frm.Comment = Edit.Macros.Description; difference_frm.checkBox1.Visible = false; difference_frm.Number = Edit.Position; if (difference_frm.ShowDialog(this) == DialogResult.OK) { if (difference_frm.FirstArg != null && difference_frm.SecondtArg != null) { Edit.Position = difference_frm.Number; Edit.Macros.Args[0] = difference_frm.FirstArg; Edit.Macros.Args[1] = difference_frm.SecondtArg; Edit.Macros.Description = difference_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Division: AddDivizionNewForm divizion_frm = new AddDivizionNewForm(app); divizion_frm.FirstArg = Edit.Macros.Args[0]; divizion_frm.SecondtArg = Edit.Macros.Args[1]; divizion_frm.Comment = Edit.Macros.Description; divizion_frm.checkBox1.Visible = false; divizion_frm.Number = Edit.Position; if (divizion_frm.ShowDialog(this) == DialogResult.OK) { if (divizion_frm.FirstArg != null && divizion_frm.SecondtArg != null) { Edit.Position = divizion_frm.Number; Edit.Macros.Args[0] = divizion_frm.FirstArg; Edit.Macros.Args[1] = divizion_frm.SecondtArg; Edit.Macros.Description = divizion_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Multiplication: AddMultiplicationNewForm multiplication_frm = new AddMultiplicationNewForm(app); multiplication_frm.FirstArg = Edit.Macros.Args[0]; multiplication_frm.SecondtArg = Edit.Macros.Args[1]; multiplication_frm.Comment = Edit.Macros.Description; multiplication_frm.checkBox1.Visible = false; multiplication_frm.Number = Edit.Position; if (multiplication_frm.ShowDialog(this) == DialogResult.OK) { if (multiplication_frm.FirstArg != null && multiplication_frm.SecondtArg != null) { Edit.Position = multiplication_frm.Number; Edit.Macros.Args[0] = multiplication_frm.FirstArg; Edit.Macros.Args[1] = multiplication_frm.SecondtArg; Edit.Macros.Description = multiplication_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Increment: AddIncrementForm increment_frm = new AddIncrementForm(app); increment_frm.Position = Edit.Macros.Args[0].Index; increment_frm.Comment = Edit.Macros.Description; increment_frm.checkBox1.Visible = false; increment_frm.Number = Edit.Position; if (increment_frm.ShowDialog(this) == DialogResult.OK) { if (increment_frm.Position > -1) { Edit.Position = increment_frm.Number; Edit.Macros.Args[0].Index = increment_frm.Position; Edit.Macros.Description = increment_frm.Comment; UpdateFormula(Selected, Edit); (Edit.Macros as Increment).Reset(); } } break; case FormulaType.Maximum: AddMaximumForm maximum_frm = new AddMaximumForm(app); maximum_frm.Position = Edit.Macros.Args[0].Index; maximum_frm.Comment = Edit.Macros.Description; maximum_frm.checkBox1.Visible = false; maximum_frm.Number = Edit.Position; if (maximum_frm.ShowDialog(this) == DialogResult.OK) { if (maximum_frm.Position > -1) { Edit.Position = maximum_frm.Number; Edit.Macros.Args[0].Index = maximum_frm.Position; Edit.Macros.Description = maximum_frm.Comment; UpdateFormula(Selected, Edit); Edit.Macros.Reset(); } } break; case FormulaType.Minimum: AddMinimumForm minimum_frm = new AddMinimumForm(app); minimum_frm.Position = Edit.Macros.Args[0].Index; minimum_frm.Comment = Edit.Macros.Description; minimum_frm.checkBox1.Visible = false; minimum_frm.Number = Edit.Position; if (minimum_frm.ShowDialog(this) == DialogResult.OK) { if (minimum_frm.Position > -1) { Edit.Position = minimum_frm.Number; Edit.Macros.Args[0].Index = minimum_frm.Position; Edit.Macros.Description = minimum_frm.Comment; UpdateFormula(Selected, Edit); Edit.Macros.Reset(); } } break; case FormulaType.PowerOf10: Add10PowXForm powX_frm = new Add10PowXForm(app); powX_frm.Position = Edit.Macros.Args[0].Index; powX_frm.Comment = Edit.Macros.Description; powX_frm.checkBox1.Visible = false; powX_frm.Number = Edit.Position; if (powX_frm.ShowDialog(this) == DialogResult.OK) { if (powX_frm.Position > -1) { Edit.Position = powX_frm.Number; Edit.Macros.Args[0].Index = powX_frm.Position; Edit.Macros.Description = powX_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Accumulation: AddAccumulationForm accumulation_frm = new AddAccumulationForm(app); accumulation_frm.Position = Edit.Macros.Args[0].Index; accumulation_frm.Comment = Edit.Macros.Description; accumulation_frm.checkBox1.Visible = false; accumulation_frm.Number = Edit.Position; if (accumulation_frm.ShowDialog(this) == DialogResult.OK) { if (accumulation_frm.Position > -1) { Edit.Position = accumulation_frm.Number; Edit.Macros.Args[0].Index = accumulation_frm.Position; Edit.Macros.Description = accumulation_frm.Comment; UpdateFormula(Selected, Edit); Edit.Macros.Reset(); } } break; case FormulaType.Media: AddMediaNewForm media_frm = new AddMediaNewForm(app); media_frm.FirstArg = Edit.Macros.Args[0]; media_frm.SecondtArg = Edit.Macros.Args[1]; media_frm.Comment = Edit.Macros.Description; media_frm.checkBox1.Visible = false; media_frm.Number = Edit.Position; if (media_frm.ShowDialog(this) == DialogResult.OK) { if (media_frm.FirstArg != null && media_frm.SecondtArg != null) { Edit.Position = media_frm.Number; Edit.Macros.Args[0] = media_frm.FirstArg; Edit.Macros.Args[1] = media_frm.SecondtArg; Edit.Macros.Description = media_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Tranformation: AddTransformationForm transform_frm = new AddTransformationForm(app); transform_frm.FirstArg = Edit.Macros.Args[0]; transform_frm.Comment = Edit.Macros.Description; transform_frm.checkBoxSetNumberAuto.Visible = false; transform_frm.Number = Edit.Position; if (Edit.Macros is Transformation) { Transformation temp = Edit.Macros as Transformation; Transformation t_clone = new Transformation(); foreach (Transformation.TCondition condition in temp.Table) { Transformation.TCondition t_condition = new Transformation.TCondition(); t_condition.Multy = condition.Multy; t_condition.Result = condition.Result; t_condition.Shift = condition.Shift; t_condition.Signal = condition.Signal; t_clone.Insert(t_condition); } t_clone.Args[0].Source = temp.Args[0].Source; t_clone.Args[0].Index = temp.Args[0].Index; t_clone.Description = temp.Description; transform_frm.Transformation = t_clone; if (transform_frm.ShowDialog(this) == DialogResult.OK) { Edit.Position = transform_frm.Number; Edit.Macros = transform_frm.Transformation; Edit.Macros.Description = transform_frm.Comment; UpdateFormula(Selected, Edit); } } break; case FormulaType.Capture: AddCaptureForm cap_frm = new AddCaptureForm(app); cap_frm.Value = Edit.Macros.Value; cap_frm.Comment = Edit.Macros.Description; cap_frm.checkBox1.Visible = false; cap_frm.Number = Edit.Position; if (cap_frm.ShowDialog(this) == DialogResult.OK) { Edit.Position = cap_frm.Number; Edit.Macros.Value = cap_frm.Value; Edit.Macros.Description = cap_frm.Comment; UpdateFormula(Selected, Edit); } break; case FormulaType.Gases: GasesForm gas_frm = new GasesForm(app); gas_frm.Comment = Edit.Macros.Description; gas_frm.checkBox1.Visible = true; gas_frm.Number = Edit.Position; gas_frm.Gases = Edit.Macros as Gases; if (gas_frm.ShowDialog(this) == DialogResult.OK) { Edit.Position = gas_frm.Number; Edit.Macros.Description = gas_frm.Comment; UpdateFormula(Selected, Edit); } break; case FormulaType.Script: ScriptFormEdit scr_frm = new ScriptFormEdit(Edit.Macros as Script); scr_frm.Comment = Edit.Macros.Description; scr_frm.checkBox1.Visible = true; scr_frm.Number = Edit.Position; if (scr_frm.ShowDialog(this) == DialogResult.OK) { Edit.Position = scr_frm.Number; Edit.Macros.Description = scr_frm.Comment; UpdateFormula(Selected, Edit); Script script = Edit.Macros as Script; if (script != null) { script.Reset(); } } break; default: break; } }
private Transformation transformation; // реализует калибровку значения параметра #endregion Fields #region Constructors /// <summary> /// Инициализирует новый экземпляр класса /// </summary> public Parameter(int i_index) { slim = new ReaderWriterLockSlim(); c_slim = new ReaderWriterLockSlim(); v_slim = new ReaderWriterLockSlim(); name = "Параметр не определен"; description = "-----"; range = new ParameterRange(); intervalToSave = 500; selfIndex = i_index; guid = Guid.NewGuid(); db_time = DateTime.MinValue; transformation = new Transformation(); Transformation.TCondition t1 = new Transformation.TCondition(); Transformation.TCondition t2 = new Transformation.TCondition(); t1.Result = 0; t1.Signal = 0; t2.Result = 65535; t2.Signal = 65535; transformation.Insert(t1); transformation.Insert(t2); }