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