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

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

2 Ответы

+2 голосов

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

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

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

(2.2 тыс. баллов) 4 19 52
+1 голос

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

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

    102 балл(ов)

  2. Un_ka

    66 балл(ов)

  3. sser

    38 балл(ов)

  4. Тигрыч

    10 балл(ов)

  5. Kiprais

    9 балл(ов)

  6. N08I40K

    8 балл(ов)

Награды месяца
1-е место: Raspberry Pi 3 Model A+
2-е место: Raspberry Pi Zero W
3-е место: Raspberry Pi Zero

...