2016-10-25 5 views
0

MAVlinkについて読むと、pixhawk fly controllerからパッケージを読み込もうとしています。 私は電話をかけるための別の方法を考えていました。このディスカッションの読者から、あなたが何を考えているのか知りたいのですが。mavlinkパッケージを読むにはどうすればいいですか?

私はpixhawkから最初の2バイトを読みました。

2番目のバイトはPAYLOADの長さである必要があります - >そう新しい私はヘッダーの4バイト+ PAYLOADの長さのバイト+ 2つのchcksubのバイトを読む必要があることを知っています。

PAYLOADの長さを読み取った後、私はバイト配列 - > sizeが
(PAYLOAD.length + 4 + 2)であることを定義し、シリアルからこのバッファに読み込みます。 いいですか?

答えて

2

MAVLinkプロトコルには、HEADER + PAYLOAD + SIGNATURE形式があります。

MAVLink v1.0を

v1.0のはQGroundControlによって指定されるように、標準的なプロトコルです。これは、形式は:

  • 6バイトのヘッダを
  • (ペイロード長)は、ペイロードをバイト
  • 2バイトの署名(チェックサム)

最初のバイトは常にプロトコル開始のフレームであります:0xFE

第2バイトは常にペイロード長です。

したがって、あなたの受信バッファサイズが(ペイロード長)であるべき+ 8

あなたが記載された方法は、一般pixhawkから受信したほとんどのパケットのために動作します。しかし、Pixhawk(ArduPilot)は拡張MAVLinkプロトコルを使用しています。このプロトコルは追加のヘッダーと署名のバイトを追加する "v2.0"という名前が付けられています。

MAVLink v2.0の

v2.0では、このような "STATUSTEXT" として選ばれた少数のメッセージに適用される拡張プロトコルです。これは、フォーマットを有する:

  • 10バイト
  • (ペイロード長)をヘッダバイトペイロード
  • 15バイトの署名

は、最初のバイトは開始のフレームを有する。0xFDでは

第2バイトは再びペイロード長です。

したがって、あなたのバッファサイズは、(ペイロード長)でなければなりません+ 25

あなたはpixhawkから、または生成からMAVLinkメッセージデータを処理したい場合。tlogファイルでは、MAVLinkメッセージの最初の2バイトであるフレームの開始とペイロードの長さのバイトに基づいて、入力メッセージのバッファサイズを設定する必要があります。

関連する問題