private void MenuClickTyreCalculator(object sender, EventArgs e) { FormTyreCalc frmTyreCalc = new FormTyreCalc(cfg.cfgTyreOrigin, cfg.cfgTyreCurrent); if (frmTyreCalc.ShowDialog() == System.Windows.Forms.DialogResult.OK) { cfg.cfgTyreOrigin = frmTyreCalc._tOrigin; cfg.cfgTyreCurrent = frmTyreCalc._tNew; ConversionFunctions.SpeedCorrectCoefficient = TyreParams.CalcK(frmTyreCalc._tOrigin, frmTyreCalc._tNew); } }
public FormTyreCalc(TyreParams origin = null, TyreParams current = null) { InitializeComponent(); _tOrigin = (origin == null) ? UserControlTyreParams.DefaultTyre : origin; _tNew = (current == null) ? UserControlTyreParams.DefaultTyre : current; ctlTyresOriginal.Tyre = _tOrigin; ctlTyresNew.Tyre = _tNew; CalcAcurancy(); this.VisibleChanged += new EventHandler(FormTyreCalc_VisibleChanged); }
//Отработка события изменения значений ComboBox private void CmbBox_Change(object sender, EventArgs e) { tyre1 = new TyreParams(Convert.ToInt32(widthComboBox.SelectedItem), Convert.ToInt32(profileComboBox.SelectedItem), Convert.ToInt32(wheelSizeComboBox.SelectedItem)); if (widthComboBox.SelectedIndex != -1 && profileComboBox.SelectedIndex != -1 && wheelSizeComboBox.SelectedIndex != -1) { listView1.Items[0].SubItems[1].Text = string.Concat(Convert.ToString(tyre1.TyreDiametr()), " мм"); listView1.Items[1].SubItems[1].Text = string.Concat(widthComboBox.SelectedItem, " мм"); listView1.Items[2].SubItems[1].Text = string.Concat(Convert.ToString(Math.Round(tyre1.CircleLenght())), " мм"); listView1.Items[3].SubItems[1].Text = string.Concat(Convert.ToString(tyre1.SideWall()), " мм"); listView1.Items[4].SubItems[1].Text = Convert.ToString(Math.Round(tyre1.RevsPerKm())); } tyre2 = new TyreParams(Convert.ToInt32(newWidthComboBox.SelectedItem), Convert.ToInt32(newProfileComboBox.SelectedItem), Convert.ToInt32(newWheelSizeComboBox.SelectedItem)); if (newWidthComboBox.SelectedIndex != -1 && newProfileComboBox.SelectedIndex != -1 && newWheelSizeComboBox.SelectedIndex != -1) { listView1.Items[0].SubItems[2].Text = string.Concat(Convert.ToString(tyre2.TyreDiametr()), " мм"); listView1.Items[1].SubItems[2].Text = string.Concat(newWidthComboBox.SelectedItem, " мм"); listView1.Items[2].SubItems[2].Text = string.Concat(Convert.ToString(Math.Round(tyre2.CircleLenght())), " мм"); listView1.Items[3].SubItems[2].Text = string.Concat(Convert.ToString(tyre2.SideWall()), " мм"); listView1.Items[4].SubItems[2].Text = Convert.ToString(Math.Round(tyre2.RevsPerKm())); } percentChange = new Double(); if (widthComboBox.SelectedIndex != -1 && profileComboBox.SelectedIndex != -1 && wheelSizeComboBox.SelectedIndex != -1 && newWidthComboBox.SelectedIndex != -1 && newProfileComboBox.SelectedIndex != -1 && newWheelSizeComboBox.SelectedIndex != -1) { pictureBox1.Refresh(); //pictureBox1.Image = null; //pictureBox1.Invalidate(); if (tyre1.TyreDiametr() < tyre2.TyreDiametr() && tyre1.TyreDiametr() != tyre2.TyreDiametr()) { listView1.Items[0].SubItems[3].ForeColor = Color.Green; listView1.Items[0].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.TyreDiametr() - tyre1.TyreDiametr())); listView1.Items[5].SubItems[1].ForeColor = Color.Green; listView1.Items[5].SubItems[1].Text = string.Concat(Convert.ToString(Math.Round((tyre2.TyreDiametr() - tyre1.TyreDiametr()) / 2, 2)), " мм"); percentChange = Math.Round(((tyre2.TyreDiametr() * 100) / tyre1.TyreDiametr()) - 100, 1); titleLabelSpeed.Text = Convert.ToString(string.Concat("Изменение показаний спидометра:\n", percentChange, " %")); } if (tyre1.TyreDiametr() > tyre2.TyreDiametr() && tyre1.TyreDiametr() != tyre2.TyreDiametr()) { listView1.Items[0].SubItems[3].ForeColor = Color.Red; listView1.Items[0].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.TyreDiametr() - tyre1.TyreDiametr())); listView1.Items[5].SubItems[1].ForeColor = Color.Red; listView1.Items[5].SubItems[1].Text = string.Concat(Convert.ToString(Math.Round((tyre2.TyreDiametr() - tyre1.TyreDiametr()) / 2, 2)), " мм"); percentChange = Math.Round(((tyre2.TyreDiametr() * 100) / tyre1.TyreDiametr()) - 100, 1); titleLabelSpeed.Text = Convert.ToString(string.Concat("Изменение показаний спидометра:\n", percentChange, " %")); } if (tyre1.TyreDiametr() == tyre2.TyreDiametr()) { listView1.Items[0].SubItems[3].ForeColor = Color.Gray; listView1.Items[0].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.TyreDiametr() - tyre1.TyreDiametr())); listView1.Items[5].SubItems[1].ForeColor = Color.Gray; listView1.Items[5].SubItems[1].Text = Convert.ToString(Math.Round((tyre2.TyreDiametr() - tyre1.TyreDiametr()) / 2, 2)); percentChange = Math.Round(((tyre2.TyreDiametr() * 100) / tyre1.TyreDiametr()) - 100, 1); titleLabelSpeed.Text = Convert.ToString(string.Concat("Изменение показаний спидометра:\n", percentChange, " %")); } if (tyre1.TyreWidth < tyre2.TyreWidth && tyre1.TyreWidth != tyre2.TyreWidth) { listView1.Items[1].SubItems[3].ForeColor = Color.Green; listView1.Items[1].SubItems[3].Text = Convert.ToString(tyre2.TyreWidth - tyre1.TyreWidth); } if (tyre1.TyreWidth > tyre2.TyreWidth && tyre1.TyreWidth != tyre2.TyreWidth) { listView1.Items[1].SubItems[3].ForeColor = Color.Red; listView1.Items[1].SubItems[3].Text = Convert.ToString(tyre2.TyreWidth - tyre1.TyreWidth); } if (tyre1.TyreWidth == tyre2.TyreWidth) { listView1.Items[1].SubItems[3].ForeColor = Color.Gray; listView1.Items[1].SubItems[3].Text = Convert.ToString(tyre2.TyreWidth - tyre1.TyreWidth); } if (tyre1.CircleLenght() < tyre2.CircleLenght() && tyre1.CircleLenght() != tyre2.CircleLenght()) { listView1.Items[2].SubItems[3].ForeColor = Color.Green; listView1.Items[2].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.CircleLenght() - tyre1.CircleLenght())); } if (tyre1.CircleLenght() > tyre2.CircleLenght() && tyre1.CircleLenght() != tyre2.CircleLenght()) { listView1.Items[2].SubItems[3].ForeColor = Color.Red; listView1.Items[2].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.CircleLenght() - tyre1.CircleLenght())); } if (tyre1.CircleLenght() == tyre2.CircleLenght()) { listView1.Items[2].SubItems[3].ForeColor = Color.Gray; listView1.Items[2].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.CircleLenght() - tyre1.CircleLenght())); } if (tyre1.SideWall() < tyre2.SideWall() && tyre1.SideWall() != tyre2.SideWall()) { listView1.Items[3].SubItems[3].ForeColor = Color.Green; listView1.Items[3].SubItems[3].Text = Convert.ToString(tyre2.SideWall() - tyre1.SideWall()); } if (tyre1.SideWall() > tyre2.SideWall() && tyre1.SideWall() != tyre2.SideWall()) { listView1.Items[3].SubItems[3].ForeColor = Color.Red; listView1.Items[3].SubItems[3].Text = Convert.ToString(tyre2.SideWall() - tyre1.SideWall()); } if (tyre1.SideWall() == tyre2.SideWall()) { listView1.Items[3].SubItems[3].ForeColor = Color.Gray; listView1.Items[3].SubItems[3].Text = Convert.ToString(tyre2.SideWall() - tyre1.SideWall()); } if (tyre1.RevsPerKm() < tyre2.RevsPerKm() && tyre1.RevsPerKm() != tyre2.RevsPerKm()) { listView1.Items[4].SubItems[3].ForeColor = Color.Green; listView1.Items[4].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.RevsPerKm() - tyre1.RevsPerKm())); } if (tyre1.RevsPerKm() > tyre2.RevsPerKm() && tyre1.RevsPerKm() != tyre2.RevsPerKm()) { listView1.Items[4].SubItems[3].ForeColor = Color.Red; listView1.Items[4].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.RevsPerKm() - tyre1.RevsPerKm())); } if (tyre1.RevsPerKm() == tyre2.RevsPerKm()) { listView1.Items[4].SubItems[3].ForeColor = Color.Gray; listView1.Items[4].SubItems[3].Text = Convert.ToString(Math.Round(tyre2.RevsPerKm() - tyre1.RevsPerKm())); } /// <summary> /// Заполнение шкалы визуального "спидометра" значениями отклонений /// </summary> //Изменение показаний спидометра перенесено в отдельный класс! Speedo = new Speed(percentChange); string[] strDigs = Speedo.ScaleSpeedo(18, 10); labelSpeed10.Text = strDigs[0]; labelSpeed20.Text = strDigs[1]; labelSpeed30.Text = strDigs[2]; labelSpeed40.Text = strDigs[3]; labelSpeed50.Text = strDigs[4]; labelSpeed60.Text = strDigs[5]; labelSpeed70.Text = strDigs[6]; labelSpeed80.Text = strDigs[7]; labelSpeed90.Text = strDigs[8]; labelSpeed100.Text = strDigs[9]; labelSpeed110.Text = strDigs[10]; labelSpeed120.Text = strDigs[11]; labelSpeed130.Text = strDigs[12]; labelSpeed140.Text = strDigs[13]; labelSpeed150.Text = strDigs[14]; labelSpeed160.Text = strDigs[15]; labelSpeed170.Text = strDigs[16]; labelSpeed180.Text = strDigs[17]; int offset = 6; int halfX = pictureBox1.Size.Width / 2, halfY = pictureBox1.Size.Height / 2; double scale; int radiusOfTyre, radiusOfWheel; int radiusOfTyre2, radiusOfWheel2; g = pictureBox1.CreateGraphics(); if (tyre1.TyreDiametr() >= 500 || tyre2.TyreDiametr() >= 500) { scale = 2.7; radiusOfTyre = (int)((tyre1.TyreDiametr() / 2) / scale); radiusOfWheel = (int)(((tyre1.WheelSize * 25.4) / 2) / scale); radiusOfTyre2 = (int)((tyre2.TyreDiametr() / 2) / scale); radiusOfWheel2 = (int)(((tyre2.WheelSize * 25.4) / 2) / scale); g.DrawArc(new Pen(Brushes.Red), (halfX - offset) - radiusOfTyre, (halfY) - radiusOfTyre, (Int32)(tyre1.TyreDiametr() / scale), (Int32)(tyre1.TyreDiametr() / scale), 90, 180); g.DrawArc(new Pen(Brushes.Red), (halfX - offset) - radiusOfWheel, (halfY) - radiusOfWheel, (Int32)((tyre1.WheelSize * 25.4) / scale), (Int32)((tyre1.WheelSize * 25.4) / scale), 90, 180); g.DrawArc(new Pen(Brushes.Black), (halfX + offset) - radiusOfTyre2, (halfY) - radiusOfTyre2, (Int32)(tyre2.TyreDiametr() / scale), (Int32)(tyre2.TyreDiametr() / scale), 270, 180); g.DrawArc(new Pen(Brushes.Black), (halfX + offset) - radiusOfWheel2, (halfY) - radiusOfWheel2, (Int32)((tyre2.WheelSize * 25.4) / scale), (Int32)((tyre2.WheelSize * 25.4) / scale), 270, 180); } else { scale = 2; radiusOfTyre = (int)((tyre1.TyreDiametr() / 2) / scale); radiusOfWheel = (int)(((tyre1.WheelSize * 25.4) / 2) / scale); radiusOfTyre2 = (int)((tyre2.TyreDiametr() / 2) / scale); radiusOfWheel2 = (int)(((tyre2.WheelSize * 25.4) / 2) / scale); g.DrawArc(new Pen(Brushes.Red), (halfX - offset) - radiusOfTyre, (halfY) - radiusOfTyre, (Int32)(tyre1.TyreDiametr() / scale), (Int32)(tyre1.TyreDiametr() / scale), 90, 180); g.DrawArc(new Pen(Brushes.Red), (halfX - offset) - radiusOfWheel, (halfY) - radiusOfWheel, (Int32)((tyre1.WheelSize * 25.4) / scale), (Int32)((tyre1.WheelSize * 25.4) / scale), 90, 180); g.DrawArc(new Pen(Brushes.Black), (halfX + offset) - radiusOfTyre2, (halfY) - radiusOfTyre2, (Int32)(tyre2.TyreDiametr() / scale), (Int32)(tyre2.TyreDiametr() / scale), 270, 180); g.DrawArc(new Pen(Brushes.Black), (halfX + offset) - radiusOfWheel2, (halfY) - radiusOfWheel2, (Int32)((tyre2.WheelSize * 25.4) / scale), (Int32)((tyre2.WheelSize * 25.4) / scale), 270, 180); } } }
private void ctlTyresNew_SizesChanged(object sender, TyreParams e) { _tNew = e; CalcAcurancy(); }
private void ctlTyresOriginal_SizesChanged(object sender, TyreParams e) { _tOrigin = e; CalcAcurancy(); }
private void InitializeSettings() { //Логи _log = Log.Instance; _log.CatchExceptions = true; _log.LogLevel = debugFlag ? EventEntryType.Debug : EventEntryType.Event; _log.LogFileEnabled = true; //делегат перехвата событий Click на ToolStripMenuItems _EHmainMenu = new EventHandler(menu_Click); //Инициализация класса настроек приложения _cfg = new Settings(); //Если настройки дефолтовые, то возможно обновили версию. //вытащим настройки из предыдущей версии и сменим флаг if (_cfg.NeedUpgrade) { _cfg.Upgrade(); _cfg.NeedUpgrade = false; } //Проверим на валидность последние пути диалогов if (_cfg.cfgdlgADRPath == null || _cfg.cfgdlgADRPath.Length == 0 || !new DirectoryInfo(_cfg.cfgdlgADRPath).Exists ) { _cfg.cfgdlgADRPath = Environment.CurrentDirectory; } if (_cfg.cfgdlgROMPath == null || _cfg.cfgdlgROMPath.Length == 0 || !new DirectoryInfo(_cfg.cfgdlgROMPath).Exists ) { _cfg.cfgdlgROMPath = Environment.CurrentDirectory; } //список доступных интерфейсов диагностики (устройств) _consltDataList = new ListIndexString <IConsultData>() { new ConsultData(new DataEngine()), new ConsultData(new DataAT()), new ConsultData(new DataHICAS()), new ConsultData(new DataAirCon()), }; mnuConsultMode.DropDownItems.Clear(); //Добавляем список режимов диагностики в меню foreach (IConsultData i in _consltDataList) { string name = i.ToString(); ToolStripMenuItem mnu = new ToolStripMenuItem(); //mnu.Click -= new EventHandler(menu_Click); //mnu.Click += new EventHandler(mnuConsultMode_Click); mnu.Name = mnu.Text = name; mnuConsultMode.DropDownItems.Add(mnu); } //Выбираем первый пункт меню по умолчанию mnuConsultMode_Click( mnuConsultMode.DropDownItems[_consltDataList[0].ToString()], new EventArgs()); //класс работы через интерфейс consult _consult = new ConsultProvider(_consltDataList[0]); //Расчитаем коэффициент скорости если размеры шин заданы if (_cfg.cfgTyreOrigin != null && _cfg.cfgTyreCurrent != null) { ConversionFunctions.SpeedCorrectCoefficient = TyreParams.CalcK(_cfg.cfgTyreOrigin, _cfg.cfgTyreCurrent); } //Если стоит настройка на автоподключение - подключимся к консульту if (_cfg.cfgConsultConnectAtStartup) { menu_Click(mnuConsultConnect); } //создаем класс работы с ROM/ADR Файлами _bin = new From(); //подписываем функцию обновления интерфейса на событие смены источника данных класса _bin.DataSourceChanged += new From.FromEventHandler(InitFRomInterface); //InitInterface(_bin, null); //Откроем предыдущие файлы конфигурации если необходимо if (_cfg.cfgOpenLastConfig) { if (_cfg.cfgRecentAdrFiles.Count > 0 && File.Exists(_cfg.cfgRecentAdrFiles[0])) { try { _bin.OpenAddressFile(_cfg.cfgRecentAdrFiles[0]); } catch { } } if (_cfg.cfgRecentBinFiles.Count > 0 && File.Exists(_cfg.cfgRecentBinFiles[0])) { try { _bin.OpenROMFile(_cfg.cfgRecentBinFiles[0]); } catch { _bin.Clear(); } } } }