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

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

2 Ответы

+2 голосов

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

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

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

(2.7 тыс. баллов) 10 29 55
+1 голос

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

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

    2 балл(ов)

  2. Палыч

    2 балл(ов)

  3. Дамир

    2 балл(ов)

  4. lcco

    2 балл(ов)

  5. Ergamister

    2 балл(ов)

  6. Александр312

    2 балл(ов)

...