From d1a0283dad40dba043e30a6fbb3bcf0d3edf64bc Mon Sep 17 00:00:00 2001 From: xu Date: Tue, 28 Jan 2020 22:45:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E9=A3=9E=E8=A1=8C=E6=97=B6?= =?UTF-8?q?=E9=97=B4=EF=BC=8C=E9=A3=9E=E8=A1=8C=E8=B7=9D=E7=A6=BB=EF=BC=8C?= =?UTF-8?q?=E5=A7=BF=E6=80=81=E8=AE=A1=E7=AE=97=E5=92=8C=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E9=AB=98=E6=95=88=E7=8E=87=20=E7=A2=B0?= =?UTF-8?q?=E6=92=9E=E6=A3=80=E6=B5=8B=E6=94=B9=E4=B8=BA=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=20=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=81=9C=E6=AD=A2=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Copters/CopterImplSharedPart.cs | 3 ++ PlaneGcsSdk_Shared/Copters/FakeCopter.cs | 35 +++++++++++-------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs index 0a498fc..145e8b2 100644 --- a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs +++ b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs @@ -179,6 +179,7 @@ namespace Plane.Copters public CopterImplSharedPart(SynchronizationContext uiSyncContext) : base(uiSyncContext) { PropertyChanged += CopterImplSharedPart_PropertyChanged; + /* Task.Run(async () => { while (true) @@ -230,7 +231,9 @@ namespace Plane.Copters await Task.Delay(5000).ConfigureAwait(false); } } + }); + */ } public event EventHandler AltitudeChanged; diff --git a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs index 2851f3c..104bbb6 100644 --- a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs +++ b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs @@ -137,16 +137,13 @@ namespace Plane.Copters _scaledFastMaxMoveInInterval = MAX_MOVE_IN_INTERVAL_FAST * _speedScale; this.Connection = connection ?? EmptyConnection.Instance; - + _isRunning = true; // 持续计算并更新虚拟飞行器的状态。 Task.Run(async () => { - while (true) + while (_isRunning) { - if (_isRunning) - { - Update(); - } + Update(); await TaskUtils.Delay(UPDATE_INTERVAL).ConfigureAwait(false); } }); @@ -424,11 +421,15 @@ namespace Plane.Copters protected override void UpdateFlightDataIfNeeded() { + //计算飞机距离,没必要 + /* if (!TakeOffPoint.IsNullOrEmpty()) { FlightDistance = TakeOffPoint.CalcDistance(this); FlightDistance2D = TakeOffPoint.CalcDistance2D(this); } + + if (FlightTimeSpan.TotalSeconds > 0) { if (_lastCalcSpeedPoint.IsNullOrEmpty()) @@ -457,6 +458,7 @@ namespace Plane.Copters } } } + */ } private void MoveToPointImmediately(double lat, double lng, float alt) @@ -520,7 +522,8 @@ namespace Plane.Copters case FlightMode.GUIDED: // 林俊清, 20160317, 指点时也能体感控制若干通道。 - UpdateWithChannels(); + //考虑不更新这个,好像没必要-xu + //UpdateWithChannels(); UpdateWithDestination(_targetLat, _targetLng, _targetAlt); break; @@ -590,11 +593,14 @@ namespace Plane.Copters } _uiSyncContext.Post(() => { + //位置变化需要在UI刷新 RaiseLocationChangedIfNeeded(); - RaiseAltitudeChangedIfNeeded(); - - RaiseDataStreamReceived(PDataStreamType.GPS_RAW_INT); - RaiseAttitudeChanged(); + //高度变化需要在UI刷新 + // RaiseAltitudeChangedIfNeeded(); + //GPS数据用于显示 + // RaiseDataStreamReceived(PDataStreamType.GPS_RAW_INT); + //不考虑姿态 + // RaiseAttitudeChanged(); }); } @@ -690,9 +696,10 @@ namespace Plane.Copters } else { - var directionDelta = direction - Heading.DegToRad(); - Roll = MAX_TILT_IN_FLIGHT * (float)Math.Sin(directionDelta); - Pitch = MAX_TILT_IN_FLIGHT * (float)Math.Cos(directionDelta); + //不用更新姿态-xu + //var directionDelta = direction - Heading.DegToRad(); + // Roll = MAX_TILT_IN_FLIGHT * (float)Math.Sin(directionDelta); + // Pitch = MAX_TILT_IN_FLIGHT * (float)Math.Cos(directionDelta); } // 水平面上的移动距离。