Как определить длину пакета на платформе Arduino?

Как получить длину пакета (2 байта) из пакета данных? Я пытался использовать sizeof(data), но получаю только 1 байт, вместо 2 байт. Вот пример пакета данных:
0x01 0x64 0x00 0x00 0x00 0x06 0x43 0x4F 0xC4 0xD8 0x5E 0x01
Длина пакета - 12 байт (0x0C). Как правильно получить 2-байтовую длину: 0x0C 0x00?
  • 26 октября 2023 г. 19:30
Ответы на вопрос 2
Чтобы получить длину пакета из пакета данных на платформе Arduino, вы можете использовать следующий код:

```cpp
uint16_t packetLength = (data[1] << 8) | data[0];
```

Этот код объединяет первый и второй байты пакета данных (data[0] и data[1]) в 16-битное значение 'packetLength'. Применяется сдвиг на 8 бит влево для второго байта, а затем выполняется побитовое ИЛИ (|) с первым байтом.

В вашем примере, данная операция выдаст значение 12 (0x0C) для длины пакета.

Обратите внимание, что порядок байтов важен и может отличаться в зависимости от архитектуры вашей платформы и типа данных, которые вы используете.
uint16_t packetSize = размер данных;
Похожие вопросы