public void ExcuteTest() { using (var client = PcbTesterClient.Create(PortName, BaudRate)) { client.Open(); var eraseCommand = new EraseSPIFlashCommand(); var eraseParameter = new AddressCommandParameter(0x0u); CommandResult eraseResult = eraseCommand.Execute(client, eraseParameter, null); var readcommand0 = new ReadSPIFlashCommand(); var readParameter0 = new AddressCommandParameter(0x0u, 4); CommandResult readResult0 = readcommand0.Execute(client, readParameter0, null); client.Write("0-0:199.128.8", new byte[] { 0x10 }, 0x0u); #if false var readcommand0 = new ReadSPIFlashCommand(); var readParameter0 = new AddressCommandParameter(0x00020000u, 4); CommandResult readResult0 = readcommand0.Execute(client, readParameter0, null); var eraseCommand = new EraseSPIFlashCommand(); var eraseParameter = new AddressCommandParameter(0x00020000u); CommandResult eraseResult = eraseCommand.Execute(client, eraseParameter, null); var readcommand = new ReadSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00u, 2, "FFFF"); //var parameter = new AddressCommandParameter(0x00020000u, 4, "FFFFFFFF"); var readParameter = new AddressCommandParameter(0x00020000u, 4); CommandResult readResult = readcommand.Execute(client, readParameter, null); var command = new WriteSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00020000u, "00000000"); //string writeData = "000000000000000000000000000000000000000000000000000001A650000000505000000050500000005050000000505000000050500000005050000000505000000050500000005050000000505000000050500000005050000000505000000050500000005050000000505000000050000000000000000000000000000000"; string writeData = "FF"; var writeParameter = new AddressCommandParameter(0x00020000u, writeData); CommandResult result = command.Execute(client, writeParameter, null); //writeParameter = new AddressCommandParameter(0x01, writeData); //result = command.Execute(client, writeParameter, null); var readcommand1 = new ReadSPIFlashCommand(); // var parameter = new AddressCommandParameter(0x00u, 2, "FFFF"); //var parameter = new AddressCommandParameter(0x00020000u, 4, "FFFFFFFF"); var readParameter1 = new AddressCommandParameter(0x00020000u, 1); CommandResult readResult1 = readcommand.Execute(client, readParameter1, null); #endif // Assert.AreEqual(result.Success, true); //Assert.AreEqual(result.Message, ""); } }
/// <summary> /// 往SPI Flash写入bin文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void writeSpiBackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker backgroundWorker = sender as BackgroundWorker; using (var client = PcbTesterClient.Create(Settings.Default.PortName, Settings.Default.BaudRate)) { client.Open(); var addressParameter = new AddressCommandParameter(); if (e.Argument != null) { addressParameter = (AddressCommandParameter)e.Argument; } //1.擦除选中SPI 地址上的内容 var eraseSpiFlashCommand = new EraseSPIFlashCommand(); var eraseResult = eraseSpiFlashCommand.Execute(client, new AddressCommandParameter(addressParameter.Address), null); if (!eraseResult.Success) { e.Result = eraseResult; return; } //2.将文件逐帧写入Flash using (FileStream stream = File.Open(this.fileNameTextBox.Text, FileMode.Open, FileAccess.Read, FileShare.Read)) { BinaryReader binaryReader = new BinaryReader(stream); byte[] readBytes = binaryReader.ReadBytes((int)stream.Length); int framesCount = readBytes.Length / bytesPerTransmit; //算出共多少帧 StringBuilder builder = new StringBuilder(); var writeSPIFlashCommand = new WriteSPIFlashCommand(); for (int i = 0; i < readBytes.Length; i += bytesPerTransmit) { //如果用户取消了任务就跳出 if (backgroundWorker.CancellationPending) { e.Cancel = true; break; } backgroundWorker.ReportProgress(i / bytesPerTransmit + 1, framesCount); builder.Clear(); for (int j = 0; j < bytesPerTransmit; j++) { builder.AppendFormat("{0:X2}", readBytes[i + j]); } var writeResult = writeSPIFlashCommand.Execute(client, new AddressCommandParameter(addressParameter.Address, builder.ToString()), null); addressParameter.Address += (uint)bytesPerTransmit; //更新下次写的SPI起始地址 if (!writeResult.Success) //写入失败 { e.Result = writeResult; return; } } } } }