iOS MAVlink协议

基于C语言,解析MAVlink消息:

创建解析消息类
class MavLinkMessage: NSObject {

static let share = MavLinkMessage()
var dicId = Dictionary<String, Any>()

}

/// 解析无人机信息 data 长连接返回的无人机数据 ,port和host 是udp连接的post和host

 func udpPort(didReceive data: Data,_ port: UInt16,_ host:String) {
     let bytes: UnsafeMutablePointer<UInt8> = UnsafeMutablePointer.allocate(capacity: data.count)
    data.copyBytes(to: bytes, count: data.count) 
    for index in 0..<data.count {
        let byte: UInt8 = (bytes + index).pointee
        var message = mavlink_message_t()
        var status = mavlink_status_t()
        let channel = UInt8(MAVLINK_COMM_0.rawValue)
        if mavlink_parse_char(channel, byte, &message, &status) != 0 {
          let mess =  message.encodeDescription(port,host)
            print(mess)
        }
    } 
    bytes.deallocate()
}

}

extension mavlink_message_t {
/* 解析MavLInk数据

 */
public func encodeDescription(_ port: UInt16,_ host: String) -> String{
let mav = MavLinkMessage.share
    mav.dicId["\(message.msgid)"] = "\(message.msgid)"
    switch msgid {
        case UInt32(MAVLINK_MSG_ID_HEARTBEAT):
         /// 心跳消息
          break
    } 
  }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容