public void TestDeviceImplementation() { var xmlString = File.ReadAllText(@"xml_loader_prefix.xml"); const int packetLenght = 34; const int packetCount = 0x100; var buffer = new Byte[packetLenght * packetCount + xmlString.Length + 1]; Array.Copy(Encoding.ASCII.GetBytes(xmlString), buffer, xmlString.Length); buffer[xmlString.Length] = 0x00; var memoryStream = new MemoryStream(buffer); var protocol = new FakeProtocol(); var timer = new FakeTimer(); var device = new TimerDeviceImpl(protocol, timer) {PacketLenght = packetLenght}; _errorString = ""; _finished = false; device.FinishedHandler += device_FinishedHandler; device.ErrorHandler += device_ErrorHandler; device.ProcessHandler += device_ProcessHandler; device.PacketHandler += device_PacketHandler; Assert.IsTrue(device.StartFlashing(memoryStream)); for (var i = 0; i < 100; ++i) timer.Advance(3500); var iterCount = 0; while (!_finished) { protocol.Process(); iterCount++; if (iterCount == 100) timer.Advance(1001); } Assert.AreEqual("", _errorString); Assert.AreEqual(packetCount + 1 + 100, protocol.PacketCount); }
private void ButtonSelectFile_Click(object sender, RoutedEventArgs e) { var dlg = new Microsoft.Win32.OpenFileDialog {DefaultExt = ".tmr", Filter = "Файлы прошивки (*.tmr)|*.tmr"}; var result = dlg.ShowDialog(); if (result != true) return; _hexFilename = dlg.FileName; var x = new TimerDeviceImpl(new SerialProtocol("2323", 32)); try { using (var s = new FileStream(_hexFilename, FileMode.Open)) { var b = x.GetBaudrateFromStream(s); if (b < 0) ProgressBar.Text = "Херню вы какую то выбрали, батенька"; ComboBoxForSerialPortBaudrate.SelectedItem = b; } } finally { UpdateSettings(); } }
void bgWorker_DoWork(object sender, DoWorkEventArgs e) { var worker = sender as BackgroundWorker; SetMaxValueForProgressBar(1000); SetValueForProgressBar(0); Debug.WriteLine(String.Format("background: {0}", Thread.CurrentThread.ManagedThreadId)); if (worker == null) return; var portSetting = e.Argument as SerialPortSetting; if (portSetting == null) return; SetTextForProgressBar("Открываем порт " + portSetting.PortName); var device = new TimerDeviceImpl(new SerialProtocol(portSetting.PortName, portSetting.Baudrate)); device.ProcessHandler += device_ProcessHandler; device.ErrorHandler += device_ErrorHandler; device.FinishedHandler += device_FinishedHandler; device.PacketHandler += device_PacketHandler; try { using (var stream = new FileStream(_hexFilename, FileMode.Open)) { if (!device.StartFlashing(stream)) { e.Result = "Ошибка открытия последовательного порта"; return; } SetTextForProgressBar("Ожидаем ответа от таймера"); _inProcess = true; _resultString = ""; while (_inProcess) { Thread.Sleep(20); } } } catch (Exception) { e.Result = "Не получилось открыть файл"; } e.Result = _resultString; }