[fix] 广播端口改为异步发送
测试发现RTK有阻塞,导致死机 # 类型 包含: # feat:新功能(feature) # fix:修补bug # docs:文档(documentation) # style: 格式(不影响代码运行的变动) # refactor:重构(即不是新增功能,也不是修改bug的代码变动) # test:增加测试 # chore:构建过程或辅助工具的变动
This commit is contained in:
parent
a88311a160
commit
40bf208054
@ -1214,25 +1214,27 @@ namespace Plane.CommunicationManagement
|
|||||||
byte rtcm_Broadser = 0;//用于广播的
|
byte rtcm_Broadser = 0;//用于广播的
|
||||||
|
|
||||||
|
|
||||||
public void BroadcastbackupGpsDataAsync(byte[] packet)
|
public async Task BroadcastbackupGpsDataAsync(byte[] packet)
|
||||||
{
|
{
|
||||||
|
|
||||||
bool sendok=false;
|
bool sendok=false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
RecomPort.Write(packet, 0, packet.Length);
|
//防止阻塞,异步发送
|
||||||
|
await RecomPort.BaseStream.WriteAsync(packet, 0, packet.Length);
|
||||||
|
//RecomPort.Write(packet, 0, packet.Length);
|
||||||
sendok = true;
|
sendok = true;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Windows.Messages.Message.Show("转发端口发送失败("+ ex.Message + "),尝试新打开...");
|
Windows.Messages.Message.Show("广播端口发送失败...");
|
||||||
}
|
}
|
||||||
if (!sendok)
|
if (!sendok)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ReOpenRtcmserial();
|
ReOpenRtcmserial();
|
||||||
if (Recomisopen) Windows.Messages.Message.Show("转发端口打开成功!");
|
if (Recomisopen) Windows.Messages.Message.Show("广播端口打开成功!");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -1289,7 +1291,7 @@ namespace Plane.CommunicationManagement
|
|||||||
await WriteCommPacketAsync(0, MavComm.COMM_DOWNLOAD_COMM, packet).ConfigureAwait(false);
|
await WriteCommPacketAsync(0, MavComm.COMM_DOWNLOAD_COMM, packet).ConfigureAwait(false);
|
||||||
//发送到广播端口作为备用数据源
|
//发送到广播端口作为备用数据源
|
||||||
if (enrecom)
|
if (enrecom)
|
||||||
BroadcastbackupGpsDataAsync(packet);
|
await BroadcastbackupGpsDataAsync(packet);
|
||||||
await Task.Delay(80).ConfigureAwait(false); //没有延时得话如果超过110长度,连续发可能收不到
|
await Task.Delay(80).ConfigureAwait(false); //没有延时得话如果超过110长度,连续发可能收不到
|
||||||
|
|
||||||
// 重发一次,有序列号(target_component)飞机可以检测出来重复接收的
|
// 重发一次,有序列号(target_component)飞机可以检测出来重复接收的
|
||||||
@ -1297,7 +1299,7 @@ namespace Plane.CommunicationManagement
|
|||||||
await WriteCommPacketAsync(0, MavComm.COMM_DOWNLOAD_COMM, packet).ConfigureAwait(false);
|
await WriteCommPacketAsync(0, MavComm.COMM_DOWNLOAD_COMM, packet).ConfigureAwait(false);
|
||||||
//发送到广播端口作为备用数据源
|
//发送到广播端口作为备用数据源
|
||||||
if (enrecom)
|
if (enrecom)
|
||||||
BroadcastbackupGpsDataAsync(packet);
|
await BroadcastbackupGpsDataAsync(packet);
|
||||||
|
|
||||||
await Task.Delay(80).ConfigureAwait(false); //没有延时得话如果超过110长度,连续发可能收不到
|
await Task.Delay(80).ConfigureAwait(false); //没有延时得话如果超过110长度,连续发可能收不到
|
||||||
}
|
}
|
||||||
@ -1451,6 +1453,9 @@ namespace Plane.CommunicationManagement
|
|||||||
RecomPort.StopBits = StopBits.One;
|
RecomPort.StopBits = StopBits.One;
|
||||||
RecomPort.DataBits = 8;
|
RecomPort.DataBits = 8;
|
||||||
RecomPort.Handshake = Handshake.None;
|
RecomPort.Handshake = Handshake.None;
|
||||||
|
//改为异步更好一些
|
||||||
|
// RecomPort.WriteTimeout = 500; // 设置写入超时为500毫秒
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user