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

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

2 Ответы

+2 голосов

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

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

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

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

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

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

    8 балл(ов)

  2. userer

    2 балл(ов)

  3. Un_ka

    2 балл(ов)

  4. parovoZZ

    2 балл(ов)

  5. Prochor

    2 балл(ов)

  6. Andrei131

    1 балл(ов)

...