我有以下问题: 我尝试将字节数组从我的 PC 发送到设备。可以发送的最大数据为 59 字节。字节 1-4 用于计算发送的包裹。因此,每个包的字节总数为 55
。现在我得到一个错误源数组不够长,即使剩余字节超过 55。
有人知道我的问题是什么吗?
uint RAW_DATA_SIZE = 55; 字节[] 参数; uint byteCount = 0; FileInfo fi = new FileInfo (Path.GetFileNameWithoutExtension(args[0](+".hex"(; Console.WriteLine(fi.长度(; 发送的整个十六进制数据的大小 TotalSentBytes = Convert.ToUInt32(fi.长度(; 将长整型转换为 uint uint dataSize = TotalSentBytes;
问题是您使用byteCount
作为Array.Copy
方法的sourceIndex
参数(请参阅Microsoft文档中的签名(:
Array.Copy(Encoding.ASCII.GetBytes(content), 0, parameters,
4 * sizeof(byte), remainingBytes > RAW_DATA_SIZE ? RAW_DATA_SIZE : remainingBytes);
我已将byteCount
替换为 0,因为您想从源数组的开头复制。
好的,我现在有了答案。 我使用 Fileinfo 来获取要发送的总字节数。
FileInfo fi = new FileInfo (Path.GetFileNameWithoutExtension(args[0])+".hex");
Console.WriteLine(fi.Length); // Size of the whole HEX data sent
TotalSentBytes = Convert.ToUInt32(fi.Length); //Convert long to uint
现在我通过以下方式获取保存在 .hex 文件中的字节数组的长度:
byte[] contentOfBytes = Encoding.ASCII.GetBytes(content); //get content of hex-file
uint dataSize = Convert.ToUInt32(contentOfBytes.Length); //get number of elements in the bytearray
现在我不再收到任何错误了。