реклама на сайте
подробности

 
 
> Передать float из МК в Visual Studio, как собрать float обратно?
smk
сообщение Feb 27 2018, 09:40
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Здравствуйте!
В контроллере (STM32F407) раскладываю float в массив:
Код
void float_to_buf_tx (float data)
{
    tempBuf[3]= ((unsigned char*)&(data))[3];
    tempBuf[2]= ((unsigned char*)&(data))[2];
    tempBuf[1]= ((unsigned char*)&(data))[1];
    tempBuf[0]= ((unsigned char*)&(data))[0];
}

Далее массив отправляется в приложение, изготовленное с помошью Visual Studio 2010.
Пытаю собрать float обратно:
Код
temp = Convert.ToSingle((mydata[3] << 24) + (mydata[2] << 16) + (mydata[1] << 8) + mydata[0]);
            label55.Text = Convert.ToString(temp);

В итоге получается не то число, что должно быть. Понятно что что-то делаю неправильно. Вот хочу спросить как правильно? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_pv
сообщение Feb 27 2018, 10:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



точно так же как и отправляли,
float a;
((unsigned char *)&a)[0] = mydata[0];
((unsigned char *)&a)[1] = mydata[1];
((unsigned char *)&a)[2] = mydata[2];
((unsigned char *)&a)[3] = mydata[3];

ну или даже memcpy(&a, mydata, 4);

но вообще для этого есть union.
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 27 2018, 16:43
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(_pv @ Feb 27 2018, 12:40) *
точно так же как и отправляли,
float a;
((unsigned char *)&a)[0] = mydata[0];
((unsigned char *)&a)[1] = mydata[1];
((unsigned char *)&a)[2] = mydata[2];
((unsigned char *)&a)[3] = mydata[3];

ну или даже memcpy(&a, mydata, 4);

но вообще для этого есть union.

На это ругается, что небезопасный код.


Цитата(Flexz @ Feb 27 2018, 12:47) *
Судя по приведенному куску кода это C#, тогда
BitConverter.ToSingle(mydata, 0);

Спасибо! Это работает!


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 00:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016