2 слова (4 байта) во Float

Тема в разделе "Arduino & Shields", создана пользователем ShyruMen, 8 фев 2017.

  1. ShyruMen

    ShyruMen Нуб

    Здравствуйте, форумчане. Имеется ардуинка считывающая по протоколу ModBus данные с тепловычислителя. Я получаю два переменные формата uint16_t со значениями 0xCO23 и 0x3333. Как можно перевести данные переменные в формат float с плавающей запятой? В итоге должно получится значение -2.55.
     
  2. rkit

    rkit Гуру

    out = ((var1 & 0xFF) << 8) + (var2 & 0xFF)
    Как-то так. Не уверен в порядке байтов.
     
  3. mcureenab

    mcureenab Гуру

    Совсем не так.

    Судя по примеру данные приходят в формате IEEE754
    Калькулятор https://www.h-schmidt.net/FloatConverter/IEEE754.html

    Код (C++):
    uint16_t byte1(0xC023), byte2(0x3333);

    union {
      float f;
      uint16_t i[2];
    } float_map = { .i = { byte1, byte2 } }; // Тут может быть порядок байтов неправильный

    float result ( float_map.f );
     
    arkadyf нравится это.
  4. ShyruMen

    ShyruMen Нуб

    mcureenab, Все получилось, спасибо большое)))