如何通过RS-232实现高效的文件上传到设备

时间:2015-03-27 19:24:41

标签: c# serial-port

我需要通过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);
}

0 个答案:

没有答案