fix: 修复i2c发送数据包错误的问题
This commit is contained in:
		@@ -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)
 | 
			
		||||
            {
 | 
			
		||||
 
 | 
			
		||||
@@ -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!"));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user