Example #1
0
        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);
        }
Example #2
0
        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();
            }
        }