Slavka_online
@Slavka_online
Интересная личность

Разница работы с памятью С и С++?

В общем происходит общение между ПК и Микроконтроллером, на обоих устройствах определена структуру
struct typeDateTimeSend{
	
	int hh;
	int mm;
	int ss;
	int dm;
	int mh;
	int yy;
	
};


Делаю на ПК такой трюк
unsigned char *pdata = (unsigned char *)&dateTime //struct typeDateTimeSend{ ;

Отправляю данные на Микроконтроллер, на нем проделываю трюк обратно

DateTime = *((struct typeDateTimeSend*)&OutReport[1]);  // [0] занят под номер команды


По сути если я отправляю число 23 (например как часы) то он отправляет 0x17 0x00 0x00 0x00 тут же на пк собирал запрос обратно и все нормально, но на контроллере почему то происходит наоборот, он стартует не слева на право, а справа на лево c9cb6cbc1a184987a812decde91cb4a4.PNG3a2d8e99323144219be37a9ad5c14394.PNG

Как исправить такое положение дел?
  • Вопрос задан
  • 558 просмотров
Пригласить эксперта
Ответы на вопрос 1
@abcd0x00
Почитай про сериализацию. Вот по тому же принципу нужно преобразовать структуру в однозначный поток байт, передать его, а потом преобразовать поток байт обратно в структуру. Так у тебя структуры могут быть устроены по разному, но при этом будут заполнены одинаково.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы