一、安转第三方包
在右键依赖项,点击“管理NuGet程序包”,搜索“MAVLink”安装检索第一项的第三方包
二、协议解析代码示例
using System;
using System.IO;
namespace MavLinkProcess
{
internal class Program
{
static void Main(string[] args)
{
FileStream fs = new FileStream(@"D:\xxxx\接收数据.bin", FileMode.Open);
StreamWriter basic_info = new StreamWriter(@"D:\xxxx\载具类型、协议版本.txt");
StreamWriter height_info = new StreamWriter(@"D:\xxxx\高度.txt");
StreamWriter traj_info = new StreamWriter(@"D:\xxxx\航迹信息.txt");
MAVLink.MavlinkParse parse = new MAVLink.MavlinkParse();
int maxAltitude = int.MinValue; // 初始化最大高度为极小值
bool isStart = false;
while (fs.Position < fs.Length)
{
var msg = parse.ReadPacket(fs);
// 载具类型、协议类型
if (msg.msgid == 0)
{
MAVLink.mavlink_heartbeat_t heartbeat_msg = (MAVLink.mavlink_heartbeat_t)msg.data;
int typeid = (int)heartbeat_msg.type;
bool isMavLink2 = msg.ismavlink2;
basic_info.WriteLine($"Protocol Type: {(isMavLink2 ? "MAVLink2" : "MAVLink1")}, Type ID: {typeid}");
}
// 出发点经纬度和高度
if (msg.msgid == 49)
{
// 协议类型
bool isMavLink2 = msg.ismavlink2;
// 载具ID
var COMPID = msg.compid;
traj_info.WriteLine($"Protocol Type: {(isMavLink2 ? "MAVLink2" : "MAVLink1")}, Component ID: {COMPID}");
MAVLink.mavlink_gps_global_origin_t p_start = (MAVLink.mavlink_gps_global_origin_t)msg.data;
traj_info.WriteLine($"Start Point - Longitude, Latitude");
traj_info.WriteLine($"{p_start.longitude * 1e-7},{p_start.latitude * 1e-7}");
height_info.WriteLine($"Altitude: {p_start.altitude * 1e-3}");
isStart = true;
}
// 航迹信息和记录最大高度
if (isStart && msg.msgid == 33)
{
MAVLink.mavlink_global_position_int_t p = (MAVLink.mavlink_global_position_int_t)msg.data;
//traj_info.WriteLine($"Current Position - Longitude, Latitude");
traj_info.WriteLine($"{p.lon * 1e-7},{p.lat * 1e-7}");
height_info.WriteLine($"Altitude: {p.alt * 1e-3}");
// 更新最大高度
if (p.alt > maxAltitude)
{
maxAltitude = p.alt;
}
}
}
// 写入最大飞行高度
height_info.WriteLine($"Maximum Flight Altitude: {maxAltitude / 1000}m");
// 清理资源
fs.Close();
basic_info.Close();
height_info.Close();
traj_info.Close();
}
}
}
注:msgid对应的数据帧内容可以在网页Introduction · MAVLink Developer Guide中查看