fix: 修复i2c发送数据包错误的问题

This commit is contained in:
SikongJueluo 2025-07-10 18:42:33 +08:00
parent 540f5c788d
commit c6c3f1cc41
No known key found for this signature in database
3 changed files with 15 additions and 4 deletions

View File

@ -113,6 +113,16 @@ public class I2c
// 写入数据到I2C FIFO写入口
{
var i2cData = new byte[data.Length * 4];
int i = 0;
foreach (var item in data)
{
i2cData[i++] = 0x00;
i2cData[i++] = 0x00;
i2cData[i++] = 0x00;
i2cData[i++] = item;
}
var ret = await UDPClientPool.WriteAddr(this.ep, 2, I2cAddr.Write, data);
if (!ret.IsSuccessful)
{

View File

@ -454,13 +454,11 @@ public class UDPClientPool
{
// Sperate Data Array
var isLastData = i == writeTimes - 1;
var sendDataArray =
isLastData ?
var sendDataArray = isLastData ?
dataArray[(i * (256 * (32 / 8)))..] :
dataArray[(i * (256 * (32 / 8)))..((i + 1) * (256 * (32 / 8)))];
// Write Jtag State Register
opts.BurstLength = ((byte)(sendDataArray.Length / 4 - 1));
opts.BurstLength = ((byte)Math.Min(sendDataArray.Length / 4 - 1, 1));
ret = await UDPClientPool.SendAddrPackAsync(endPoint, new SendAddrPackage(opts));
if (!ret) return new(new Exception("Send 1st address package failed!"));

View File

@ -269,6 +269,9 @@ namespace WebProtocol
if (bodyData.Length > 256 * (32 / 8))
throw new Exception("The data of SendDataPackage can't over 256 * 32bits");
if (bodyData.Length % 4 != 0)
throw new Exception("The data of SendDataPackage should be divided by 4");
this.bodyData = bodyData;
_ = _reserved;