From 9a9c25a1dd21cf3de89fff9b16f218d502f4b1d4 Mon Sep 17 00:00:00 2001 From: xu Date: Wed, 22 Apr 2020 01:14:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E6=94=B9=E5=8F=98=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E6=9D=A1=E4=BB=B6=E4=B8=BA=E8=B7=9D=E7=A6=BB?= =?UTF-8?q?=E8=B6=85=E8=BF=870.5=E5=92=8C=E6=97=B6=E9=97=B4=E7=BB=8F?= =?UTF-8?q?=E8=BF=87500ms=E6=94=B9=E4=B8=BA=E4=BD=8D=E7=BD=AE=E6=9C=89?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E5=B0=B1=E9=80=9A=E7=9F=A5=EF=BC=8C=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E4=B8=8D=E5=8F=98=EF=BC=8C=E6=97=B6=E9=97=B4=E5=86=8D?= =?UTF-8?q?=E9=95=BF=E4=B9=9F=E4=B8=8D=E9=80=9A=E7=9F=A5=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E8=BF=87=E5=8A=A0=E5=85=A5=E5=BC=BA=E5=88=B6=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E7=9A=84=E6=9C=BA=E5=88=B6=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BD=8D=E7=BD=AE=E4=B8=8D=E5=8F=98=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E6=B2=A1=E6=9C=89500ms=E8=87=AA=E5=8A=A8=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=EF=BC=8C=E9=A2=9C=E8=89=B2=E5=B0=B1=E4=B8=8D=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E7=9A=84bug=20=E6=9B=B4=E6=96=B0=E8=99=9A=E6=8B=9F?= =?UTF-8?q?=E9=A3=9E=E8=A1=8C=E5=99=A8=E7=8A=B6=E6=80=81=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E9=97=B4=E9=9A=94=E7=94=B1150=E6=94=B9=E4=B8=BA50?= =?UTF-8?q?=E6=AF=AB=E7=A7=92=EF=BC=8C=E9=A3=9E=E6=9C=BA=E6=9B=B4=E5=B9=B3?= =?UTF-8?q?=E6=BB=91=EF=BC=8C=E4=B8=8D=E8=BF=87i7=E5=8F=AA=E8=83=BD?= =?UTF-8?q?=E9=A3=9E500=E6=9E=B6=E5=B7=A6=E5=8F=B3=EF=BC=8C1000=E6=9E=B6?= =?UTF-8?q?=E7=9A=84=E8=AF=9D=E8=BF=98=E6=98=AF=E9=9C=80=E8=A6=81=E6=94=B9?= =?UTF-8?q?=E5=9B=9E150ms=E5=88=B7=E6=96=B0=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Copters/ICopterActions.cs | 4 +++ .../Copters/CopterImplSharedPart.cs | 29 +++++++++++++++++-- PlaneGcsSdk_Shared/Copters/FakeCopter.cs | 2 +- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs b/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs index 43c88fc..c8dcdf4 100644 --- a/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs +++ b/PlaneGcsSdk.Contract_Shared/Copters/ICopterActions.cs @@ -153,5 +153,9 @@ namespace Plane.Copters Task DoCommandAckAsync(ushort command, byte result); + + //强制刷新位置 + void RefreashLoc(); + } } diff --git a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs index ef68b6e..3c52310 100644 --- a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs +++ b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs @@ -723,7 +723,11 @@ namespace Plane.Copters public string LEDColor { get { return _LEDColor; } - set { Set(nameof(LEDColor), ref _LEDColor, value); } + set { + if (Set(nameof(LEDColor), ref _LEDColor, value)) + //强制刷新颜色--在刷新位置时才刷新颜色 + RefreashLoc(); + } } #if PRIVATE @@ -1131,14 +1135,33 @@ namespace Plane.Copters protected void RaiseLocationChanged() => LocationChanged?.Invoke(this, EventArgs.Empty); - protected void RaiseLocationChangedIfNeeded() + public void RefreashLoc() { - if (_lastChangedLocation == null || this.CalcDistance(_lastChangedLocation) >= 0.5 || DateTime.Now.AddMilliseconds(-500) >= _lastRaiseLocationChangedTime) + RaiseLocationChangedIfNeeded(true); + } + + protected void RaiseLocationChangedIfNeeded(bool forcemk=false) + { + //强制刷新位置 + if (forcemk) + { + RaiseLocationChanged(); + return; + } + //减少计算量,在模拟飞机很多时花时间 + bool EnRaise = true; + if (_lastChangedLocation != null) + EnRaise = (Altitude != _lastChangedLocation.Altitude) || + (Latitude != _lastChangedLocation.Latitude) || + (Longitude != _lastChangedLocation.Longitude); + //if (_lastChangedLocation == null || this.CalcDistance(_lastChangedLocation) >= 0.5 || DateTime.Now.AddMilliseconds(-500) >= _lastRaiseLocationChangedTime) + if (EnRaise) { RaiseLocationChanged(); _lastChangedLocation = new PLLocation(this); _lastRaiseLocationChangedTime = DateTime.Now; } + } protected void RaiseMissionItemReceived(MissionItemReceivedEventArgs e) diff --git a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs index f953a14..63f853c 100644 --- a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs +++ b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs @@ -32,7 +32,7 @@ namespace Plane.Copters /// /// 更新虚拟飞行器状态的时间间隔,单位为毫秒。 /// - private const int UPDATE_INTERVAL = 150; //150可以跑1000架 100可以跑500架 + private const int UPDATE_INTERVAL = 50; //150可以跑1000架 100可以跑500架 /// /// 对飞行器的模拟是否正在运行。