diff --git a/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs b/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs
index 063030c..22a845e 100644
--- a/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs
+++ b/PlaneGcsSdk_Shared/CommunicationManagement/CommModuleGenerateMavLink.cs
@@ -540,6 +540,9 @@ namespace Plane.CommunicationManagement
byte[] data = packet1.Concat(packet2).Concat(packet3).ToArray();
await WriteCommPacketAsync(copterId, MavComm.COMM_DOWNLOAD_COMM, data, batchPacket).ConfigureAwait(false);
+ if (Recomisopen)
+ await BroadcastSendAsync(data);
+
}
else
{
@@ -1213,11 +1216,16 @@ namespace Plane.CommunicationManagement
byte rtcm_tmpser = 0; //用于通讯模块的
byte rtcm_Broadser = 0;//用于广播的
-
- public async Task BroadcastbackupGpsDataAsync(byte[] packet)
+ ///
+ /// 发送到广播端口
+ ///
+ /// 发送数据
+ /// 发送失败是否要重新打开再发一次
+ ///
+ public async Task BroadcastSendAsync(byte[] packet,bool reopensend = false)
{
- bool sendok=false;
+ bool sendok = false;
try
{
//防止阻塞,异步发送
@@ -1229,7 +1237,8 @@ namespace Plane.CommunicationManagement
{
Windows.Messages.Message.Show("广播端口发送失败...");
}
- if (!sendok)
+
+ if (!sendok&& reopensend)
{
try
{
@@ -1240,9 +1249,27 @@ namespace Plane.CommunicationManagement
{
Windows.Messages.Message.Show("再次打开串口失败" + ex.Message);
ReOpenRtcmserial();
- }
+ }
+ if (Recomisopen)
+ {
+ try
+ {
+ await RecomPort.BaseStream.WriteAsync(packet, 0, packet.Length);
+ //RecomPort.Write(packet, 0, packet.Length);
+ }
+ catch (Exception ex)
+ {
+ Windows.Messages.Message.Show("再次发送失败...");
+ }
+ }
+
}
}
+
+ public async Task BroadcastbackupGpsDataAsync(byte[] packet)
+ {
+ await BroadcastSendAsync(packet,true);
+ }
// get sum crc 计算数据校验和
public byte checkrtrcmsum(byte[] data, ushort length)
@@ -1453,8 +1480,7 @@ namespace Plane.CommunicationManagement
RecomPort.StopBits = StopBits.One;
RecomPort.DataBits = 8;
RecomPort.Handshake = Handshake.None;
- //改为异步更好一些
- // RecomPort.WriteTimeout = 500; // 设置写入超时为500毫秒
+ RecomPort.WriteTimeout = 500; // 设置写入超时为500毫秒,防止Close时候卡死
try