0 голосов
У меня 2 платы обмениваются данными с помощью UART. Возможно ли послать структуру (C struct{} ), а потом её считать?

Я знаю, что можно послать строку, а потом её распарситиь и сложить в структуру. Но это заметно сложнее.
(869 баллов) 3 32 74
исправил
в смысле С-шный struct {} или что-то еще?
Да, сишный struct

2 Ответы

+1 голос

По указателю на адрес первого поля (элемента). Например, вот так:

void SPI_ReadArray(uint8_t num, uint8_t *data)
{
	while(num--)
	{
		*data++ = SPI_WriteByte(*data);
	}
}

Но необходимо структуру одинаково выровнять что на передатчике, что и на приемнике в случае, если используются разные компиляторы или разрядность систем не совпадает. В примере предполагается выравнивание структуры по байтам.

(1.2 тыс. баллов) 1 10 29
0 голосов

Товарищ на Английском аналоге breadboard заявляет, что написал библиотеку , которая может делать подобное.

(770 баллов) 1 5 24
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. BAR__MEN

    394 балл(ов)

  2. parovoZZ

    324 балл(ов)

  3. issaom

    216 балл(ов)

  4. Un_ka

    144 балл(ов)

  5. gokase

    125 балл(ов)

  6. dartWaiter

    74 балл(ов)

Награды месяца
1-е место: Arduino Nano 33 BLE Sense
2-е место: Arduino Nano 33 BLE
3-е место: Arduino Nano 33 IoT

...