我需要通过RS-232协议将文件上传到目标平台。
输入是一个文件(具有存储器地址,字节数和要写入设备存储器的数据)。由于我正在通过RS-232进行块写操作,因此我遵循了这种方法。但是有没有有效的方法来实现下面的方案,因为我开始用C#编写代码,以及我希望显示下载进度条(基于写入的字节数与总字节数)。我是在单独的线程中实现它并在GUI中更新。如果使用此方案文件大小变大,是否会出现任何性能问题?
以下是代码:
private void DownloadToDevice(String file_path)
{
FileData = System.IO.File.ReadAllBytes(file_path);
StartAddress = BitConverter.ToUInt32(FileData, 12);
StartAddress = FileData.ElementAt(12);
NumOfBytes = BitConverter.ToUInt32(FileData, 16);
NumOfBytes = FileData.ElementAt(16);
Block = FileData.Skip(20).Take((int)NumOfBytes).ToArray();
WriteBlock(StartAddress, Block, Block.Length);
}
private void WriteBlock(UInt32 Address, byte[] Data, int val)
{
String command2 = "";
UInt32 Data2;
String command1 = String.Format("wr {0}", Address.ToString("x").PadLeft(8, '0'));
for (int i = 0; i <= val ; i= i + 4)
{
Data2 = BitConverter.ToUInt32(Data,i);
command2 = string.Concat(command2, String.Format("{0} ", Data2.ToString("x").PadLeft(8, '0')));
}
command1 = string.Concat(command1," ", command2,"\r");
m_SP.Write(command1);
}