/// <summary> /// 转为字符串形式OBIS参数 /// </summary> /// <param name="parameter">强编命令参数类实例</param> /// <returns>字符串形式OBIS参数</returns> private string FormatWriteParameter(ForceProgramCommandParameter parameter) { uint length = ForceProgramHelper.CalculateForceProgramLength(parameter.Length); uint spiAddress = ForceProgramHelper.CalculateSpiAddress(parameter.SpiAddress); return(string.Format("0x{0:X2},0x{1:X4},0x{2:X8},0x{3:X8}", parameter.I2CChipSelect, parameter.I2CAddress, spiAddress, length)); }
/// <summary> /// 将选中的Bin文件写入SPI指定地址中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void transmitButton_Click(object sender, EventArgs e) { this.startTransmitButton.Enabled = false; this.stopTransmitButton.Enabled = true; using (FileStream stream = File.Open(this.fileNameTextBox.Text, FileMode.Open, FileAccess.Read, FileShare.Read)) { this.transmitProgressBar.Maximum = (int)stream.Length / bytesPerTransmit; } uint spiAddress = (uint)ForceProgramHelper.CalculateSpiAddress((uint)this.transmitForceProgram.ProgramChip); this.writeSpiBackgroundWorker.RunWorkerAsync(new AddressCommandParameter(spiAddress)); //触发DoWork事件 }
/// <summary> /// 将SPI Flash里的bin文件读出来,与磁盘上的bin文件做对比 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void startCompareButton_Click(object sender, EventArgs e) { this.startCompareButton.Enabled = false; this.stopTransmitButton.Enabled = true; this.readFlashDataTextBox.Clear(); this.startAddress = 0; uint spiAddress = (uint)ForceProgramHelper.CalculateSpiAddress((uint)this.transmitForceProgram.ProgramChip); if (!int.TryParse(this.readLengthComboBox.SelectedItem.ToString(), out int readLength)) //此时从UI上获取的读取长度是以KB为单位 { return; } this.transmitProgressBar.Maximum = readLength * 1024 / bytesPerTransmit; this.readSpiBackgroundWorker.RunWorkerAsync(new AddressCommandParameter(spiAddress, (uint)readLength)); }