Преобразование byte > float

Elfec
Offline
Зарегистрирован: 22.12.2012

Есть две дуины и пара nRF24L01 модулей, суть в то что передача идет пакетом из буфера допустим 4 байта.

float t = dht.readTemperature();
  Serial.print("Local_temp=");
  Serial.println(t);
  Mirf.setTADDR((byte *)"mega");
  
  Mirf.send((byte *)&t);
  
  while(Mirf.isSending()){
  }
  Serial.println("Finished sending");
  delay(100);

преобразовывая значение флоат с дхт22 в  байт.

Как его преобразовать обратно на приемнике? 

byte data[4];
      
  if(!Mirf.isSending() && Mirf.dataReady()){
    Serial.println("Got packet");
      Mirf.getData(data);

Заранее спасибо, вопрос может показаться глупым, просто с забитой под вечер головой тяжело вникнуть в суть вопроса(

maksim
Offline
Зарегистрирован: 12.02.2012
maksim
Offline
Зарегистрирован: 12.02.2012
float t = 0; 

if(!Mirf.isSending() && Mirf.dataReady())
{
  Serial.println("Got packet");
  byte data[4];
  Mirf.getData(data);
  float *y = (float *)&data;
  t = y[0];
}

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Обычно хватает принципа "как передаем, так и принимаем"

Возможно, хватило бы

Mirf.getData((byte *)&t);