diff --git a/PlaneGcsSdk_Shared/CommunicationManagement/CommModule.cs b/PlaneGcsSdk_Shared/CommunicationManagement/CommModule.cs index b1c5e7e..1c29095 100644 --- a/PlaneGcsSdk_Shared/CommunicationManagement/CommModule.cs +++ b/PlaneGcsSdk_Shared/CommunicationManagement/CommModule.cs @@ -196,7 +196,7 @@ namespace Plane.CommunicationManagement { long lastPacketCountNum = 0; int faulttimes = 0; //等待没有数据次数 - const int revtimeout = 1200; //等待超时ms + const int revtimeout = 2000; //等待超时ms old=1200 while (CommOK) { if (Connection != null) @@ -204,7 +204,7 @@ namespace Plane.CommunicationManagement //发送心跳包-等待回复消息 await WriteCommPacketAsync(0, MavComm.COMM_QUERY_STATUS); // await SendQueryStatusPacketsAsync(); - await Task.Delay(revtimeout).ConfigureAwait(false); //1200 + await Task.Delay(revtimeout).ConfigureAwait(false); //等待是否接受到返回的数据包,如果没有收到认为连结断开,重新联接 if (packetCountNum > lastPacketCountNum) { @@ -217,8 +217,8 @@ namespace Plane.CommunicationManagement { faulttimes++; Message.Show("设备回复超时("+ revtimeout + "ms)" + faulttimes+"次"); - //超过3次没数据包返回就重连 - if (faulttimes > 3) + //2次没数据包返回就重连 + if (faulttimes > 1) { Message.Show("长时间未收到设备回复数据包"); break; diff --git a/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs b/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs index 71195dc..14311c6 100644 --- a/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs +++ b/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs @@ -533,7 +533,7 @@ namespace Plane.CommunicationManagement byte[] packet1 = SetChannels(1500, 1500, 1100, 1500); - byte[] packet2 = SetModeAsync(FlightMode.ALT_HOLD); + byte[] packet2 = SetModeAsync(FlightMode.ALT_HOLD); //ALT_HOLD LOITER byte[] packet3 = DoARMAsync(true); diff --git a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs index 132aba8..04016ac 100644 --- a/PlaneGcsSdk_Shared/Copters/FakeCopter.cs +++ b/PlaneGcsSdk_Shared/Copters/FakeCopter.cs @@ -21,17 +21,17 @@ namespace Plane.Copters /// /// 更新虚拟飞行器状态的时间间隔,单位为毫秒。 /// - private int UPDATE_INTERVAL = 50; //默认100, i7电脑 150可以跑1000架 100可以跑500架 50可以200-300架 + static private int UPDATE_INTERVAL =50; //默认100, i7电脑 150可以跑1000架 100可以跑500架 50可以200-300架 /// /// 在一个更新间隔中的最大移动距离。 /// - private float MAX_MOVE_IN_INTERVAL = MAX_VEL * 50 / 1000; + private float MAX_MOVE_IN_INTERVAL = MAX_VEL * UPDATE_INTERVAL / 1000; /// /// 高速模式下,在一个更新间隔中的最大移动距离。 /// - private float MAX_MOVE_IN_INTERVAL_FAST = MAX_VEL * 50 / 1000 * 4; //MAX_MOVE_IN_INTERVAL*4 + private float MAX_MOVE_IN_INTERVAL_FAST = MAX_VEL * UPDATE_INTERVAL / 1000 * 4; //MAX_MOVE_IN_INTERVAL*4 @@ -55,12 +55,12 @@ namespace Plane.Copters /// /// 高速模式下,按比例缩放过的在一个更新间隔中的最大移动距离。 /// - private float _scaledFastMaxMoveInInterval = MAX_VEL * 50 / 1000 * 4; //MAX_MOVE_IN_INTERVAL_FAST + private float _scaledFastMaxMoveInInterval = MAX_VEL * UPDATE_INTERVAL / 1000 * 4; //MAX_MOVE_IN_INTERVAL_FAST /// /// 按比例缩放过的在一个更新间隔中的最大移动距离。 /// - private float _scaledMaxMoveInInterval = MAX_VEL * 50 / 1000; //MAX_MOVE_IN_INTERVAL + private float _scaledMaxMoveInInterval = MAX_VEL * UPDATE_INTERVAL / 1000; //MAX_MOVE_IN_INTERVAL /// /// 速度缩放比例。 @@ -708,45 +708,20 @@ namespace Plane.Copters { // 与目标点之间的距离。 var distance = this.CalcDistance(lat, lng, alt); - // 距离已经很近,直接移动到目标点。 if (distance < _scaledMaxMoveInInterval) { MoveToPointImmediately(lat, lng, alt); return; } - // 在空间中的移动距离。 var move = _scaledMaxMoveInInterval; - // 竖直方向的移动距离。 var altDelta = (float)(move * (alt - Altitude) / distance); // 更新高度。 Altitude += altDelta; - - // 目标点相对于当前位置的方向。 var direction = this.CalcDirection2D(lat, lng); - /* - // 更新姿态。 - - if (Mode == FlightMode.RTL) - { - // 王海, 20160126, 目前飞行器只在返航时会旋转机头,面对飞行方向。 - Yaw = (float)direction.RadToDeg(); - Heading = (short)Yaw; - Roll = 0; - Pitch = MAX_TILT_IN_FLIGHT; - } - else - { - //不用更新姿态-xu - //var directionDelta = direction - Heading.DegToRad(); - // Roll = MAX_TILT_IN_FLIGHT * (float)Math.Sin(directionDelta); - // Pitch = MAX_TILT_IN_FLIGHT * (float)Math.Cos(directionDelta); - } - */ - // 水平面上的移动距离。 var moveInHorizontalPlane = Math.Sqrt(move * move - altDelta * altDelta); if (double.IsNaN(moveInHorizontalPlane)) diff --git a/PlaneGcsSdk_Shared/Copters/PLCopter.cs b/PlaneGcsSdk_Shared/Copters/PLCopter.cs index 68fe842..c890284 100644 --- a/PlaneGcsSdk_Shared/Copters/PLCopter.cs +++ b/PlaneGcsSdk_Shared/Copters/PLCopter.cs @@ -349,7 +349,7 @@ namespace Plane.Copters ch4: 1500 ).ConfigureAwait(false); - if (await SetModeAsync(FlightMode.ALT_HOLD).ConfigureAwait(false)) + if (await SetModeAsync(FlightMode.LOITER).ConfigureAwait(false)) { await _internalCopter.DoARMAsync(true).ConfigureAwait(false); } diff --git a/PlaneGcsSdk_Shared/Protocols/MAVLinkTypes.cs b/PlaneGcsSdk_Shared/Protocols/MAVLinkTypes.cs index 2ffad51..46c708e 100644 --- a/PlaneGcsSdk_Shared/Protocols/MAVLinkTypes.cs +++ b/PlaneGcsSdk_Shared/Protocols/MAVLinkTypes.cs @@ -18,8 +18,8 @@ namespace Plane.Protocols public const int MAVLINK_BIG_ENDIAN = 0; //Эͷ ɿ4.0Ժ 254 - 240 Mavlinkͷ FE Ϊ F0 - public const byte MAVLINK_STX = 254; - //public const byte MAVLINK_STX = 240; + //public const byte MAVLINK_STX = 254; + public const byte MAVLINK_STX = 240; public const byte MAVLINK_ENDIAN = MAVLINK_LITTLE_ENDIAN;