2016-10-25 6 views
0

MAVlink에 대해 읽고 나는 pixhawk fly 컨트롤러에서 패키지를 읽으려고합니다. 나는 전화를 걸기위한 또 다른 방법을 생각했고이 토론에서 독자들에게 알리고 싶다. 당신은 무엇을 생각하고 있는지 생각하고있다.mavlink 패키지를 읽는 방법 .. 내 방식대로 할 수 있습니까?

나는 pixhawk에서 두 개의 첫 번째 바이트를 읽었다.

두 번째 바이트는 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

두 번째 바이트는 항상 페이로드 길이입니다.

그러므로 당신은 (페이로드 길이) 버퍼 크기이어야 수신 + 8

는 일반적으로 대부분의 패킷들이 pixhawk로부터 위해 작동 기재된 방법. 그러나 Pixhawk (ArduPilot)은 추가 헤더 및 서명 바이트를 추가하는 "v2.0"이라는 신조어로 작성된 확장 MAVLink 프로토콜을 사용합니다.

MAVLink 2.0

2.0은 "STATUSTEXT"과 같은 몇 가지 선택 메시지에 적용되는 확장 된 프로토콜입니다. 이 형식 가지고

  • 10 바이트는 헤더를
  • (페이로드 길이) 페이로드를
  • 15 바이트 서명 바이트

첫 번째 바이트가있는 프레임의 시작 : 에서부터 0xFD

두 번째 바이트는 다시 페이로드 길이입니다.

따라서, 귀하의 버퍼 크기 (페이로드 길이)해야 +

당신이 pixhawk에서, 또는 생성에서 MAVLink 메시지 데이터를 처리하려면 25.tlog 파일은 MAVLink 메시지의 처음 두 바이트 인 프레임의 시작과 페이로드 길이 바이트를 기반으로 입력 메시지 버퍼 크기를 설정해야합니다.