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;