diff --git a/PlaneGcsSdk.Contract_Shared/Copters/ICopterStatus.cs b/PlaneGcsSdk.Contract_Shared/Copters/ICopterStatus.cs
index 47c6a19..2f4fc8b 100644
--- a/PlaneGcsSdk.Contract_Shared/Copters/ICopterStatus.cs
+++ b/PlaneGcsSdk.Contract_Shared/Copters/ICopterStatus.cs
@@ -173,6 +173,14 @@ namespace Plane.Copters
///
float Voltage { get; }
+ ///
+ /// 预留字节用于通信模块条件下的返回值
+ ///
byte[] Retain { get; }
+
+ ///
+ /// 飞机上通信模块版本
+ ///
+ byte CommModuleVersion { get; }
}
}
diff --git a/PlaneGcsSdk_Shared/Communication/TcpConnectionBase.cs b/PlaneGcsSdk_Shared/Communication/TcpConnectionBase.cs
index b866599..aedcd37 100644
--- a/PlaneGcsSdk_Shared/Communication/TcpConnectionBase.cs
+++ b/PlaneGcsSdk_Shared/Communication/TcpConnectionBase.cs
@@ -43,7 +43,7 @@ namespace Plane.Communication
{
try
{
- return !((_client.Client.Poll(1000, SelectMode.SelectRead) && (_client.Client.Available == 0)) || !_client.Client.Connected);
+ return _client.Client != null && !((_client.Client.Poll(1000, SelectMode.SelectRead) && (_client.Client.Available == 0)) || !_client.Client.Connected);
}
catch (ObjectDisposedException)
{
@@ -107,6 +107,8 @@ namespace Plane.Communication
{
while (Available < count)
{
+ if (Available > 0)
+ Console.WriteLine("Available = " + Available);
//if (!IsOpen)
// return 0;
if (!IsOnline)
diff --git a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs
index a3cf514..9200070 100644
--- a/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs
+++ b/PlaneGcsSdk_Shared/Copters/CopterImplSharedPart.cs
@@ -662,6 +662,13 @@ namespace Plane.Copters
protected set { Set(nameof(CommModuleMode), ref _CommModuleMode, value); }
}
+ private byte _CommModuleVersion;
+ public byte CommModuleVersion
+ {
+ get { return _CommModuleVersion; }
+ protected set { Set(nameof(CommModuleVersion), ref _CommModuleVersion, value); }
+ }
+
#if PRIVATE
public
#else
diff --git a/PlaneGcsSdk_Shared/Copters/EHCopter.InternalCopterEventHandlers.cs b/PlaneGcsSdk_Shared/Copters/EHCopter.InternalCopterEventHandlers.cs
index 46c96d6..97f2073 100644
--- a/PlaneGcsSdk_Shared/Copters/EHCopter.InternalCopterEventHandlers.cs
+++ b/PlaneGcsSdk_Shared/Copters/EHCopter.InternalCopterEventHandlers.cs
@@ -33,6 +33,7 @@ namespace Plane.Copters
Retain = BitConverter.GetBytes(_internalCopter.retain);
Voltage = _internalCopter.battery_voltage;
CommModuleMode = (FlightMode)_internalCopter.commModuleMode;
+ CommModuleVersion = _internalCopter.commModuleVersion;
IsUnlocked = _internalCopter.isUnlocked;
Yaw = _internalCopter.yaw;
HeartbeatCount++;
diff --git a/PlaneGcsSdk_Shared/Copters/PlaneCopter.PacketAnalysis.cs b/PlaneGcsSdk_Shared/Copters/PlaneCopter.PacketAnalysis.cs
index 2d875a2..283d96e 100644
--- a/PlaneGcsSdk_Shared/Copters/PlaneCopter.PacketAnalysis.cs
+++ b/PlaneGcsSdk_Shared/Copters/PlaneCopter.PacketAnalysis.cs
@@ -378,7 +378,7 @@ namespace Plane.Copters
/// 处理通信模块发过来的数据
///
///
- public void AnalyzeCommMouldePositionIntPacket(byte[] buffer)
+ public void AnalyzeCommMouldePositionIntPacket(byte[] buffer, byte version)
{
var info = buffer.ByteArrayToStructure(0);
lat = info.lat * 1.0e-7;
@@ -392,6 +392,8 @@ namespace Plane.Copters
battery_voltage = ((float)info.battery_voltage) / 1000;
yaw = ((float)info.yaw / 100) % 360;
+ commModuleVersion = version;
+
retain = info.retain;
RaiseReceiveDataStreamEventOnUIThread(MAVLink.MAVLINK_MSG_ID_GPS_RAW_INT);
}
diff --git a/PlaneGcsSdk_Shared/Copters/PlaneCopter.cs b/PlaneGcsSdk_Shared/Copters/PlaneCopter.cs
index c806ae7..1d275de 100644
--- a/PlaneGcsSdk_Shared/Copters/PlaneCopter.cs
+++ b/PlaneGcsSdk_Shared/Copters/PlaneCopter.cs
@@ -43,6 +43,8 @@ namespace Plane.Copters
public uint mode { get; set; }
public uint commModuleMode { get; set; }
+ public byte commModuleVersion { get; set; }
+
public bool isUnlocked { get; set; }
public float battery_voltage { get; set; }