private void BwAnalyser_DoWork(object sender, DoWorkEventArgs e) { int progressCounter = 0; bwAnalyser.ReportProgress(0, "Чтение файла..."); patcher.ReadFile(e.Argument as string); var comPorts = NavitelCOMPort.GetPortList(); List <NavitelCOMPort> foundedPorts = new List <NavitelCOMPort>(); foreach (var port in comPorts) { progressCounter += 6; bwAnalyser.ReportProgress(progressCounter, "Поиск сигнатуры порта COM" + port.PortNumber + "..."); List <int> comOffsets = patcher.GetOffsets(port.Signature); foreach (var entry in comOffsets) { port.OffsetInFile = entry; foundedPorts.Add(port); } } var speedList = NavitelCOMSpeed.GetSpeedList(); List <NavitelCOMSpeed> foundedSpeeds = new List <NavitelCOMSpeed>(); foreach (var speed in speedList) { progressCounter += 6; bwAnalyser.ReportProgress(progressCounter, "Поиск сигнатуры скорости порта " + speed.Name + " бит/с..."); List <int> speedOffsets = patcher.GetOffsets(speed.Signature); foreach (var entry in speedOffsets) { speed.OffsetInFile = entry; foundedSpeeds.Add(speed); } } e.Result = new AnalyseResult(foundedPorts, foundedSpeeds); }
private void BwAnalyser_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { var result = e.Result as AnalyseResult; if (result.Ports.Count == 1) { pictureBoxPort.Image = Properties.Resources.iconOk; labelPort.Text = "Найдена сигнатура порта COM" + result.Ports[0].PortNumber; wizardPage2Analyse.AllowNext = true; foundedPort = result.Ports[0]; } else { if (result.Ports.Count < 1) { pictureBoxPort.Image = Properties.Resources.iconError; labelPort.Text = "Сигнатуры COM порта не найдены."; } else { pictureBoxPort.Image = Properties.Resources.iconError; labelPort.Text = "Найдено более одной сигнатуры. Применения патча может вызвать ошибку в приложении."; } } if (result.Speed.Count == 1) { pictureBoxSpeed.Image = Properties.Resources.iconOk; labelSpeed.Text = "Найдена сигнатура скорости порта " + result.Speed[0].Name + " бит/с"; wizardPage2Analyse.AllowNext = true; foundedSpeed = result.Speed[0]; } else { if (result.Speed.Count < 1) { pictureBoxSpeed.Image = Properties.Resources.iconError; labelSpeed.Text = "Сугнатуры скорости порта не найдены."; } else { pictureBoxSpeed.Image = Properties.Resources.iconError; labelSpeed.Text = "Найдено более одной сигнатуры. Применения патча может вызвать ошибку в приложении."; } } labelProgress.Text = "Готово"; progressBar1.Value = 100; if (foundedPort != null) { labelCurrentPort.Text = "Текущий порт: " + foundedPort.ToString(); var portlist = NavitelCOMPort.GetPortList(); var portItems = from port in portlist where port.PortNumber != foundedPort.PortNumber select port; comboBoxNewPort.Items.Clear(); int portIndex = comboBoxNewPort.Items.Add("Не менять"); comboBoxNewPort.SelectedIndex = portIndex; foreach (var item in portItems) { comboBoxNewPort.Items.Add(item); } } else { labelCurrentPort.Text = "Текущий порт: не найден."; } if (foundedSpeed != null) { labelCurrentSpeed.Text = "Текущая скорость: " + foundedSpeed.ToString(); var speedList = NavitelCOMSpeed.GetSpeedList(); var speedItems = from speed in speedList where speed.Name != foundedSpeed.Name select speed; comboBoxNewSpeed.Items.Clear(); int speedIndex = comboBoxNewSpeed.Items.Add("Не менять"); comboBoxNewSpeed.SelectedIndex = speedIndex; foreach (var item in speedItems) { comboBoxNewSpeed.Items.Add(item); } } else { labelCurrentSpeed.Text = "Текущая скорость: не найдена." + foundedSpeed.ToString(); } }