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

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

2 Ответы

+2 голосов

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

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

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

(1.8 тыс. баллов) 3 13 47
+1 голос

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

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

    40 балл(ов)

  2. Тигрыч

    12 балл(ов)

  3. Iscander

    6 балл(ов)

  4. issaom

    5 балл(ов)

  5. Un_ka

    4 балл(ов)

  6. parovoZZ

    4 балл(ов)

Награды месяца
1-е место: Teensy 3.6
2-е место: Teensy 3.5
3-е место: Teensy 3.2

...