Официальный сайт компании Arduino по адресу arduino.cc
HC-12 передача структуры
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 10/05/2017 - 16:02
Помогите пожалуйста разобраться с передачей структуры по uart(радиомодули HC-12).
Есть структура, ее размер через sizeof равен 5 байт.
typedef struct { uint8_t idTo; //0x01 uint8_t idFrom; //0x02 uint8_t nameSensor; // 0x03 int val; //29 }Data; Data sens;
Отправляю структуру радиомодулю Serial1.write((char*)&sens; И в com порт себе. По com порту получаю 4 байта 0x01 0x02 0x03 0x1D. А на приемнике в цикле по идее надо получать 5 байт так как sizeof показал размер 5! А приходит 0x01 0x02 0x03 0x1D 0xFF.
for(int i = 0; i < 5; i++) { buf[i] = Serial1.read(); Serial.print(buf[i]); } memcpy(&sens,buf,5);
И число уже не 29 а -227. Но если принять не 5 а 4 байта то всё норм. Или отправлять большее число. Как сделать так, чтобы отправлялось 2 байта int val и если число маленькое то дополнялось нулями! 0x01 0x02 0x03 0x1D 0x00
int надо разложить на два байта.
int надо разложить на два байта.
Вместо int val сделать два поля uint8_t val_L и uint8_t val_H
Отправляю структуру радиомодулю Serial1.write((char*)&sens;
А Вы не могли бы нормально привести кусок кода, которым отправляете? То, что здесь написано - кодом не является.