Как отправить int[][] как массив байтов через Serial

У меня есть int arr[50][2]; и мне нужно отправить его через Serial. Но я не знаю, как это сделать. Возможно ли это?

, 👍0


1 ответ


Лучший ответ:

1

В комментарии вы пишете, что принимающая сторона тоже Arduino. Тогда вы можете отправлять данные в двоичном виде.

Чтобы отправить массив:

Serial.write((byte*) arr, sizeof(arr));
  • (byte*) преобразует ячейку памяти arr в массив байтов
  • sizeof возвращает размер массива в байтах

Чтобы получить двоичные данные, необходимо знать размер. Здесь мы считываем 100 16-битных целых чисел:

Serial.readBytes((byte*) arr, 100 * sizeof(short));

Функция readBytes — одна из «синхронизированных» функций Stream. Она ждет следующий байт (до тайм-аута).

Если одна плата Arduino 8-битная, а вторая — 32-битная, то используйте тип short вместо int, поскольку размер типа int отличается, но тип short имеет длину 16 бит на всех платах Arduino.

,