MissionPlanner编程框架

在做无人机主站时,面临利用mavlink协议进行串行通信;总体上来说,主站一方面需要实时的知道设备的当前运行数据,一方面又要可以发送命令到设备和进行一些参数查询交互,为了达到这种特殊的要求,参考mavlink协议,可以通过设备主动向主站不停的发送心跳包,心跳包中包括当前设备状态,如位置、转速、角度等参数。具体来说,主站编程思路是:

1、定义消息。

2、定义设备类。设备类中包含设备的状态数据

3、定义协议接口,包含设备实例,定义读包方法readPackage,定义读数据锁,写数据锁,定义giveComport独占标识(标识是否可以读取心跳包),定义设备控制方法(独占giveComport->产生命令数据包->读数据包->返回->释放独占giveComport)

4、开启一个心跳包监听线程,检测读是否空闲giveComport,空闲则进行数据读取解析,将解析的状态数据存入设备类中。


具体来说,对于开源地面站MissionPlanner,在MAVLINK动态库中定义消息,MissionPlanner.MAVLinkInterface中实现协议接口,MainV2主界面中开启线程进行心跳包监听,定时的在giveComport==false时,调用MAVLinkInterface.ReadPacket()进行读包,读到的包存入设备类MAVState的包存储器中packets中,供后续飞行数据界面数据刷新用。要发送命令到飞控,首先独占数据区giveComport设为true,阻止监听线程读包,打包发送命令数据,再进行读包解析,全部采用同步阻塞的方式,超时重发,返回时释放giveComport。

对于其他的一些设备,要在主站实现一些自动控制功能,也可以采用这个通信方式。



  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值