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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> printf("\n float = %f \n", value.fVal); выкидывает из программы, lpc2478 & uClinux
forever failure
сообщение Jul 23 2010, 06:49
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Ну а на другом конце модбаса эти отмеченные болдом байты из чего берутся ?
И: верность числа в чём заключается ?

А так, в качестве опыта, - подставьте ваши болдом выделенные баты в любой хекс-эдитор, и посмотите, какому значению четырёхбайтной плавучки эти байты соответствуют.
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jul 23 2010, 06:58
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



Цитата
value.bytes[0] = data[3];
value.bytes[1] = data[4];
value.bytes[2] = data[5];
value.bytes[3] = data[6];
с модбасом вапще часто творят что хотят, канонически быйты идут в том порядке в котором сделано у меня
Go to the top of the page
 
+Quote Post
forever failure
сообщение Jul 23 2010, 07:01
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Пробую телепатировать: должно получится 66467.6, нет, не так ?

Если так, то ваш линукс и иполняемое приложение должно исползовать little endian порядок байт. Иначе пробуйте заполнять выше обозначенный унион в обратном порядке:
value.bytes[3] = data[4];
value.bytes[2] = data[3];
value.bytes[1] = data[6];
value.bytes[0] = data[5];
Go to the top of the page
 
+Quote Post
andybeg
сообщение Jul 23 2010, 07:08
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954



Цитата
И: верность числа в чём заключается ?
предлагаю закрыть тему неверного фрмирования флоута, провёл эксперимент
Цитата
vv=123.456;
printf("\n int %d ",(unsigned int)(10*vv));
и на выходе получил 1234, думаю можно сделать вывод о том что проблемы именно с принтфом

Цитата
Пробую телепатировать: должно получится 66467.6, нет, не так ?
именно так
Go to the top of the page
 
+Quote Post
forever failure
сообщение Jul 23 2010, 07:28
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Да именно так, похоже неверным оказывается printf
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 23 2010, 07:55
Сообщение #21


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(andybeg @ Jul 22 2010, 22:47) *
вероятно не активирована, не работает, по итогу привёл к инту и пользовал эти флоуты так, в конце концов пока что дробная часть не актуальна


Хе - сначала не заметил этот момент, там похоже какой-то лихой тулчейн используется, принципиально новый ;-)

Сообщение отредактировал sasamy - Jul 23 2010, 07:57
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jul 23 2010, 18:04
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(forever failure @ Jul 23 2010, 10:28) *
Да именно так, похоже неверным оказывается printf


Возьмите printf из любой библиотеки (например DietLib), переименуйте printf из этого модуля и подключите к своему проекту. Сразу все увидите. Удивительно сколько времени тратится на изучение "black box'a" в виде непонятно кем сделанной библиотеки.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 01:16
Рейтинг@Mail.ru


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