Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

4 байт перевод в float в CodeVision

Непрочитано 06.06.2010, 17:19  
Fan79
Временная регистрация
 
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Fan79 на пути к лучшему
По умолчанию 4 байт перевод в float в CodeVision

Как можно преводить полученные 4 байта в массиве в одно число с плавающей точкой. Никак не могу решить это. Сдвиг в таком формате DP_SU=(rx_buffer1[9]‹‹24)+(rx_buffer1[10]‹‹16)+(rx_buffer1[11]‹‹+rx_buffer1[12]; не работает. хотя в C# работает нормально. Спасибо!
Реклама:
Fan79 вне форума  
Непрочитано 06.06.2010, 17:49  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,395
Сказал спасибо: 85
Сказали Спасибо 674 раз(а) в 393 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

DP_SU=*((float*)&rx_buffer1[9]);
pambaru вне форума  
Непрочитано 06.06.2010, 18:06  
Fan79
Временная регистрация
 
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Fan79 на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

Блин все заработало Спасибо! Пока не знаю как это алгоритм работает. Попробую разобраться. спасибо еще раз
Fan79 вне форума  
Непрочитано 06.06.2010, 18:25  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 339
Сказал спасибо: 2
Сказали Спасибо 34 раз(а) в 30 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

Сообщение от Fan79 Посмотреть сообщение
хотя в C# работает нормально
CodeVisionAVR обычному стандарту С не совсем соответствует, а Вы еще и C# его сравнить хотели...
__________________
Гидравлика + электроника = POWER
mrKirill вне форума  
Непрочитано 06.06.2010, 19:08  
Fan79
Временная регистрация
 
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Fan79 на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

Ну понятно что не соответствует. Час совсем запутке. При переводе windows калькулятор показывает 0xC2B16045›› -1028562875 и C# тоже. другая прога 3266404421, при присвоении на DP_SU=0xC2B16045 тоже 3.266405е+9. А когда делаю DP_SU=*((float*)&rx_buffer1[9]); =3.595110е+3 хотя в памяти нормально устанавливается. Спасибо помогите как быть. rx_buffer1[9]=0xc2, rx_buffer1[10]=0xb1, rx_buffer[11]=0x60, rx_buffer1[12]=0x45; приходить необходимо получит от 4 байта число с плав. точкой
Fan79 вне форума  
Непрочитано 06.06.2010, 19:16  
mrKirill
Вид на жительство
 
Аватар для mrKirill
 
Регистрация: 12.04.2007
Сообщений: 339
Сказал спасибо: 2
Сказали Спасибо 34 раз(а) в 30 сообщении(ях)
mrKirill на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

Сообщение от Fan79 Посмотреть сообщение
windows калькулятор показывает 0xC2B16045›› -1028562875
Не понял...
У меня показывает 3266404421.

Это число в итоге где у Вас используется?
__________________
Гидравлика + электроника = POWER
mrKirill вне форума  
Непрочитано 06.06.2010, 19:31  
Fan79
Временная регистрация
 
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Fan79 на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

У меня Windows 7 там калькулятор показывает это число когда 8 байт используется а при 4 байта = -1028562875. И С#
double s;
public byte[] b= new byte[4];
private void button1_Click(object sender, EventArgs e)
{
b[0] = 0xC2;
b[1] = 0xb1;
b[2] = 0x60;
b[3] = 0x45;

s=(b[0]‹‹24)+(b[1]‹‹16)+(b[2]‹‹+b[3];
textBox1.Text=Convert.ToString(s);
}
} тоже показывает -1028562875.
Да это приходить от другого терминала там все данные представлены как точка с плав. точкой. у меня контроллер опрашивает это терминал и выводить значение. Но пока нет. не могу разобрасться. проверяю в протеусе
Fan79 вне форума  
Непрочитано 06.06.2010, 19:52  
vvkka
Прописка
 
Регистрация: 24.08.2005
Сообщений: 140
Сказал спасибо: 18
Сказали Спасибо 16 раз(а) в 15 сообщении(ях)
vvkka на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

Сообщение от Fan79 Посмотреть сообщение
s=(b[0]‹‹24)+(b[1]‹‹16)+(b[2]‹‹+b[3];

а заместо этого попробуй вот так
s=(b[0]‹‹24)|(b[1]‹‹16)|(b[2]......;
vvkka вне форума  
Непрочитано 06.06.2010, 20:01  
Fan79
Временная регистрация
 
Регистрация: 10.11.2007
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
Fan79 на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

без разницы тоже самое. Главное это не важно, мне важно как в CodeVision перевести. Я в протеусе проверил это код DP_SU=*((float*)&rx_buffer1[9]); главное оно нормально в ячейке памяти нормально устанавливается C2B16045 f выводить совсем другое
Fan79 вне форума  
Непрочитано 06.06.2010, 20:43  
vvkka
Прописка
 
Регистрация: 24.08.2005
Сообщений: 140
Сказал спасибо: 18
Сказали Спасибо 16 раз(а) в 15 сообщении(ях)
vvkka на пути к лучшему
По умолчанию Re: 4 байт перевод в float в CodeVision

Сообщение от Fan79 Посмотреть сообщение
b[0] = 0xC2;
b[1] = 0xb1;
b[2] = 0x60;
b[3] = 0x45;
переделай конструкцию в
b[]={0xc2;0xb1;0x60;0x45;........}
дальше все тоже...в CV получается
s=3266404421
vvkka вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03
float в CodeVision savarez Микроконтроллеры, АЦП, память и т.д 2 14.11.2009 03:27


Часовой пояс GMT +4, время: 01:38.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.