Чтение структуры побайтно.

Вопросы программирования в системе Ардуино
Аватара пользователя
БлудныйКот
Сообщения: 41
Зарегистрирован: 29 дек 2016, 16:19

Чтение структуры побайтно.

Сообщение БлудныйКот » 23 янв 2017, 13:24

Добрый день!

Такой вопрос. Есть структура состоящая в основном из интов.

struct Data{
uint8_t A = 0x1A;
uint16_t B = 0xFF2B;
uint8_t С = 0x4D;
}Data;


Пытаюсь побайтно переписать данные из этой структуры в массив uint8_t array[3]. Есть ли способы это сделать через указатели? Интересует именно чтение полей структуры через указатели.

Зараннее спасибо!
Последний раз редактировалось БлудныйКот 23 янв 2017, 14:06, всего редактировалось 6 раз.


Аватара пользователя
БлудныйКот
Сообщения: 41
Зарегистрирован: 29 дек 2016, 16:19

Re: Чтение структуры побайтно.

Сообщение БлудныйКот » 23 янв 2017, 13:30

Пытаюсь прочитать поля структуры через указатель.

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.print("Sctructure Data : " );
for(int i = 0; i < 3; i++)
{
uint8_t a = *( (byte *)(&Data+i) );
Serial.print(a);
Serial.println(" ");
}
}

В порте получаю:
Sctructure Data : 1 20 0


Пытался сделать по аналогии с вашим туториалом, но что то не получается.
http://mypractic.ru/urok-15-ukazateli-v ... bajty.html

Эдуард
Администратор
Сообщения: 360
Зарегистрирован: 30 окт 2016, 20:53

Re: Чтение структуры побайтно.

Сообщение Эдуард » 23 янв 2017, 14:08

При математических операциях над указателями учитывается размер типа данных указателя. Поэтому, если необходимо прочитать в байтах, то i надо прибавлять к указателю преобразованному в байты

uint8_t a = *( ((byte *)(&Data)) + i);

Аватара пользователя
БлудныйКот
Сообщения: 41
Зарегистрирован: 29 дек 2016, 16:19

Re: Чтение структуры побайтно.

Сообщение БлудныйКот » 23 янв 2017, 14:10

Спасибо) Работает))


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость