From 287c41624748910f7a5249aff93f74236f86e9c4 Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Thu, 3 Jul 2025 19:30:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=B0=83=E6=95=B4Camera=E7=9A=84taskID?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E5=85=B6=E8=83=BD=E5=A4=9F=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E6=8E=A5=E5=8F=97=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/Peripherals/CameraClient.cs | 4 ++-- server/src/UdpClientPool.cs | 9 +++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/server/src/Peripherals/CameraClient.cs b/server/src/Peripherals/CameraClient.cs index ef65c6b..dc63b4a 100644 --- a/server/src/Peripherals/CameraClient.cs +++ b/server/src/Peripherals/CameraClient.cs @@ -42,14 +42,14 @@ class Camera public async ValueTask> ReadFrame() { // 清除UDP服务器接收缓冲区 - await MsgBus.UDPServer.ClearUDPData(this.address, 3); + await MsgBus.UDPServer.ClearUDPData(this.address, 2); logger.Trace($"Clear up udp server {this.address} receive data"); // 使用UDPClientPool读取图像帧数据 var result = await UDPClientPool.ReadAddrBytes( this.ep, - 3, // taskID + 2, // taskID CameraAddr.Base, (int)CameraAddr.FrameLength, this.timeout); diff --git a/server/src/UdpClientPool.cs b/server/src/UdpClientPool.cs index 57e923a..9872408 100644 --- a/server/src/UdpClientPool.cs +++ b/server/src/UdpClientPool.cs @@ -323,7 +323,6 @@ public class UDPClientPool opts.BurstType = BurstType.FixedBurst; opts.CommandID = Convert.ToByte(taskID); - opts.Address = devAddr; opts.IsWrite = false; // Check Msg Bus @@ -332,8 +331,8 @@ public class UDPClientPool // Calculate read times and segments var maxBytesPerRead = 256 * (32 / 8); // 1024 bytes per read - var hasRest = dataLength % maxBytesPerRead != 0; - var readTimes = hasRest ? + var restBytes = dataLength % maxBytesPerRead; + var readTimes = restBytes != 0 ? dataLength / maxBytesPerRead + 1 : dataLength / maxBytesPerRead; @@ -341,9 +340,7 @@ public class UDPClientPool { // Calculate current segment size var isLastSegment = i == readTimes - 1; - var currentSegmentSize = isLastSegment && hasRest ? - dataLength % maxBytesPerRead : - maxBytesPerRead; + var currentSegmentSize = isLastSegment ? restBytes : maxBytesPerRead; // Set burst length (in 32-bit words) opts.BurstLength = (byte)(currentSegmentSize / 4 - 1);