[personal profile] ex0_planet
Скажите, коллеги, и просто сочувствующие, а вот у вас такой код не вызывает подозрений?
uint8_t *buffer = malloc(...)
size_t offset = 0
buf_append_float32(buffer, config->voltage, 1e3, &offset);
buf_append_float32(buffer, config->current, 1e3, &offset);
buf_append_float32(buffer, config->temperature, 1e2, &offset);


Нет? Точно нет? А должен вызывать, потому что при попытке прочитать этот float32 с другого конца там вываливается чёрт знает что.

Хорошо, еще одна попытка. Я подскажу: вот этот 1e3 там неспроста, и битыый жизнью программист уже должен сделать на него стойку.

Ладно, лезем в конец задачника в исходники и видим следующее:
void buf_append_float32(uint8_t *buffer, float data, float scale, size_t *offset)
{
   buf_append_int32(buffer, (int32_t)(data * scale), offset)
}

Всё усугубляется тем, что _float32 — в документации к протоколу, а _int32 — в прошивке, благо исходники доступны.

Редкостная пидерсия.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

ex0_planet

April 2023

S M T W T F S
      1
234567 8
910111213 1415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 24th, 2026 01:31 pm
Powered by Dreamwidth Studios