java实现mavlink协议解析与封包上传数据,实现mavlink数据交互,附带代码、详解

java实现mavlink协议解析与封包上传数据,实现mavlink数据交互,附带代码、详解

mavLink简介

MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)或云端服务器之间通讯,以及无人飞行器之间通讯最常用的协议。它已经在PX4、APM、PIXHAWK和Parrot AR.Drone飞控平台上进行了大量测试。本篇文章介绍了使用java来进行mavlink协议解析,封包与解包的过程,并附带源码供大家使用。

源码使用

在使用源码前需要引入mavlink的sdk,这里我们在pom.xml文件中添加如下配置:
在这里插入图片描述
mavSdk是我们进行mavlink协议解析、封包解包的基础工具,添加好后可以将具体解包、封包的源码放入文件。
源码可以通过本篇文章绑定的资源进行下载。

源码目录如下:

在这里插入图片描述
mavlink协议数据包解析类为Parser.java

public class Parser {

    static final String TAG = Parser.class.getSimpleName();
    static final boolean V = false;

    static void logv(String tag, String msg) {
        if(V) System.out.println(String.format("%s: %s", tag, msg));
    }

    /**
     * States from the parsing state machine
     */
    enum MAV_states {
        MAVLINK_PARSE_STATE_UNINIT,
        MAVLINK_PARSE_STATE_IDLE,
        MAVLINK_PARSE_STATE_GOT_STX,
        MAVLINK_PARSE_STATE_GOT_LENGTH,
        MAVLINK_PARSE_STATE_GOT_INCOMPAT_FLAGS, // MAVLink 2
        MAVLINK_PARSE_STATE_GOT_COMPAT_FLAGS, // MAVLink 2
        MAVLINK_PARSE_STATE_GOT_SEQ,
        MAVLINK_PARSE_STATE_GOT_SYSID,
        MAVLINK_PARSE_STATE_GOT_COMPID,
        MAVLINK_PARSE_STATE_GOT_MSGID1,
        MAVLINK_PARSE_STATE_GOT_MSGID2, // MAVLink 2
        MAVLINK_PARSE_STATE_GOT_MSGID3, // MAVLink 2
        MAVLINK_PARSE_STATE_GOT_CRC1,
        MAVLINK_PARSE_STATE_GOT_CRC2, // MAVLink 2
        MAVLINK_PARSE_STATE_GOT_PAYLOAD,
        MAVLINK_PARSE_STATE_GOT_SIGNATURE, // MAVLink 2
    }

    private MAV_states state = MAV_states.MAVLINK_PARSE_STATE_UNINIT;

    public MAVLinkStats stats;
    private MAVLinkPacket m;
    private boolean isMavlink2;

    public Parser() {
        this(false);
    }

    public Parser(boolean ignoreRadioPacketStats) {
        stats = new MAVLinkStats(ignoreRadioPacketStats);
        isMavlink2 = false;
    }

    /**
     * This is a convenience function which handles the complete MAVLink
     * parsing. the function will parse one byte at a time and return the
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔猴疯猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值