Skip to main content
Skip table of contents

Custom binary protocol

The custom binary protocol is a flexible format designed to store binary data of varying lengths within a defined limit.

Data:

  • Custom data

Format:

<q><N><T><var0><var1>…<varN><cs>

Custom binary protocol description

FIELD N.

FIELD

DESCRIPTION

UNIT

TYPE

NOTE

Byte 0

q

message header ('q' or 'Q')

-

string

If data is invalid or unstable (MAIN_OK = 0 in health monitoring system), the header is replaced with 'Q', while the rest of the message remains unchanged.

Byte 1

N

length of message

-

U8

The number of bytes in the frame after length: T,var0,var1,…,varN,cs.

Byte 2

T

token

-

U8

A user adjustable number that helps identify or label the message format. Range: [10,100].

Byte 3-N

varN

data message N

-

U8 / U32 / I32 / Single / Double

Selected data from output variable list.

Big-endian: Data variables consisting of multiple bytes are transmitted with MSB first.

Byte N+1

cs

checksum

-

U8

XOR of all bytes between token and checksum.

Example:

A custom binary frame with example data, including roll, pitch, and heading (in that order), is shown below in hexedecimal format.

<71><0D><18> <3D><8F><EA><E4> <BE><D4><A1><E9> <43><97><F6><0F> <AD>

Byte 0

Byte 1

Byte 2

Byte 3-6

Byte 7-10

Byte 11-14

Byte 15

71

0D

18

3D 8F EA E4

BE D4 A1 E9

43 97 F6 0F

AD

Decoded values:

By using hex-to-decimal conversion and the IEEE 754 formula, we can decode the values.

  • Byte 0

    • Raw value: 71, decoded value: q (stable data).

  • Byte 1

    • Raw value: 0D, decoded value: 3 x number of bytes (per data message) + 1 (token) = 3 x 4 + 1 = 13 = 0D (hexadecimal).

  • Byte 2

    • Raw value: 18, decoded value: 18 (hexadecimal) = 24 (decimal). User selected token associated with this configuration.

  • Byte 3-6 (roll)

    • Hex to binary: 3D 8F EA E4 = 0011 1101 1000 1111 1110 1010 1110 0100.

    • Roll value = (-1)s x 1.M x 2(E-127) = (-1)0 x 1.000111111101010111001002 x 2(123−127) = 1.124225616 x 2-4 = 0.0702641.

    • Due to rounding errors, the final roll angle is 0.07 degrees.

Bit position

Component

Extracted bits

Bit 1

Sign (S)

0 (positive)

Bits 2-9

Exponent (E)

01111011 (decimal: 123)

Bits 10-32

Mantissa (M)

00011111110101011100100

  • Byte 7-10 (pitch)

    • Hex to binary: BE D4 A1 E9 = 1011 1110 1101 0100 1000 0001 1110 1001.

    • Pitch value = (-1)s x 1.M x 2(E-127) = (-1)1 x 1.101010010000001111010012 x 2(125−127) = -1.64006 x 2-2 = −0.410015.

    • Due to rounding errors, the final pitch angle is -0.41 degrees.

Bit position

Component

Extracted bits

Bit 1

Sign (S)

1 (negative)

Bits 2-9

Exponent (E)

01111101 (decimal: 125)

Bits 10-32

Mantissa (M)

10101001000000111101001

  • Byte 11-14 (heading)

    • Hex to binary: 43 97 F6 0F = 0100 0011 1001 0111 1111 0110 0000 1111.

    • Heading value = (-1)s x 1.M x 2(E-127) = (-1)0 x 1.001011111110110000011112 x 2(135−127) = 1.18629 x 28 = 303.69024.

    • Due to rounding errors, the final heading angle is 303.69 degrees.

Bit position

Component

Extracted bits

Bit 1

Sign (S)

0 (positive)

Bits 2-9

Exponent (E)

10000111 (decimal: 125)

Bits 10-32

Mantissa (M)

00101111111011000001111

  • Byte 15 (checksum)

    • Raw value: AD, hexadecimal value created from XOR operations of all bytes between token and checksum.

Note

The custom binary protocol follows big-endian format: MSB is stored at the lowest memory address, followed by the LSB.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.