как читать пакет mavlink .. можно ли делать это по-моему?

Я читаю о MAVlink и пытаюсь читать пакеты с контроллера pixhawk fly. Я придумал другой способ позвонить, и я хочу узнать из этого обсуждения, читатели, все ли в порядке, и что вы думаете

На моем ридере.. читаю два первых байта с пиксхока.

Второй байт должен быть длиной ПОЛЕЗНОЙ НАГРУЗКИ --> так что я знаю, что мне нужно прочитать 4 байта заголовка + байты длины ПОЛЕЗНОЙ НАГРУЗКИ + 2 байта chcksub.

Итак, после чтения длины PAYLOAD я определяю массив байтов -> размер
( PAYLOAD.length + 4 + 2 ) и считываю из последовательного порта в этот буфер. Можно ли это сделать?


person Yanshof    schedule 25.10.2016    source источник


Ответы (1)


Протокол MAVLink имеет формат HEADER + PAYLOAD + SIGNATURE.

MAVLink v1.0

v1.0 — это стандартный протокол, указанный в QGroundControl. Он имеет формат:

  • заголовок 6 байт
  • (Длина PAYLOAD) байт полезной нагрузки
  • 2 байта подписи (контрольная сумма)

Первый байт всегда является началом кадра протокола: 0xFE.

Второй байт всегда является длиной полезной нагрузки.

Следовательно, размер вашего приемного буфера должен быть (длина PAYLOAD) + 8.

Описанный вами метод обычно работает для большинства пакетов, полученных от pixhawk. Однако pixhawk (ArduPilot) использует расширенный протокол MAVLink, который был придуман как «v2.0», который добавляет дополнительные байты заголовка и подписи.

MAVLink v2.0

v2.0 — это расширенный протокол, который применяется к нескольким избранным сообщениям, таким как «STATUSTEXT». Он имеет формат:

  • 10-байтовый заголовок
  • (Длина PAYLOAD) байт полезной нагрузки
  • подпись 15 байт

Первый байт имеет начало кадра: 0xFD

Второй байт снова является длиной полезной нагрузки.

Следовательно, размер вашего буфера должен быть (длина PAYLOAD) + 25.

Если вы хотите обработать данные сообщения MAVLink из pixhawk или из сгенерированного файла .tlog, вы должны установить размер буфера входного сообщения на основе байтов начала кадра и длины полезной нагрузки, первых двух байтов любого сообщения MAVLink.

person Michael Shanaher    schedule 06.12.2016