Пример #1
0
        /// <summary>
        /// 将读到的数据显示在UI上
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void readSpiBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            if (e.UserState as AddressCommandParameter == null)
            {
                return;
            }
            var data = e.UserState as AddressCommandParameter;

            string[]      readData = ForceProgramHelper.SplitString(data.Data);
            int           i        = 0;
            StringBuilder builder  = new StringBuilder();

            for (i = 0; i < readData.Length; i += 16)
            {
                builder.AppendFormat("{0:X8}:  ", startAddress + i);
                for (int j = 0; j < 16; j++)
                {
                    builder.AppendFormat("{0:X2}", readData[i + j]);
                    if (j < 15)
                    {
                        builder.Append(" ");
                    }
                }

                builder.Append("\r\n");
            }
            startAddress += i;
            this.readFlashDataTextBox.AppendText(builder.ToString()); //将从Flash读出来的内容显示在TextBox上

            this.transmitProgressBar.Value  = e.ProgressPercentage;
            this.fileTransmitInfoLabel.Text = string.Format(Resources.ForceProgramDialog_FramesCountFormat, data.Length, e.ProgressPercentage);
        }
Пример #2
0
        /// <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));
        }
Пример #3
0
        /// <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事件
        }
Пример #4
0
        /// <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));
        }