-
- А чего парится?! дополнить нулем и имеем классический флоат. Помню с начальной школы: "Если тупишь, используй формальные методы". Формализуем задачу: Тип не определенный в компиляторе. Значит необходимо определить сам тип (typedef) и определить IBAH(172 знак., 24.11.2018 19:44)
- +1 - Codavr(25.11.2018 11:49)
- Такое уже было когда-то с американскими истребителями в Израиле. Из-за подобной ошибки они переворачивались вверх ногами при полетах над Мертвым морем ниже уровня мирового океана. Не Вы первый. - Yurasvs(24.11.2018 19:16)
- чегой-то вспоминается мелкочиповский формат - Vit(24.11.2018 17:59, ссылка)
- (->) - Скрипач(24.11.2018 17:49, картинка)
- Документация доставляет. Адуринщики, блин. - SciFi(24.11.2018 16:44)
- Но-но! :-) Это монопольный поставщик уровнемеров и массы электроники для всех нефтебаз РФ. - Лагунов(24.11.2018 17:25, ссылка)
- Так это вы воруете бензин у населения? Будем знать - argus98(24.11.2018 19:23)
- Но-но! :-) Это монопольный поставщик уровнемеров и массы электроники для всех нефтебаз РФ. - Лагунов(24.11.2018 17:25, ссылка)
- Лучше конечно sprintf для float использовать, потому что там еще "не-число" и два вида безконечностей тусуются. - Скрипач(24.11.2018 16:42)
- Ну допустим, а как будет выглядеть sprintf в таком случае? У меня там числа с величинами от 1 до 2 знаков до запятой и до 3 знаков после запятой. И как тогда в результате будет знак? - Лагунов(24.11.2018 17:19)
- Положение запятой определяет не мантисса, а порядок (у вас на него два байта отведено). - Скрипач(24.11.2018 17:22)
- У меня сейчас всё выглядит примерно так. Лагунов(201 знак., 24.11.2018 17:31)
- У тебя преобразование типов float -> UNSIGNED!!! int. При отрицательном float-e результат неопределен. - il-2(24.11.2018 19:03)
- так я уже давно согласный! И как мне сделать знаковое преобразование из float? Кстати, если для sprintf предложить число 0хFFFFFFFA, то исправно получается строка"-0006". Т.е. сам sprintf всё понимает. :-) - Лагунов(25.11.2018 06:56)
- Кстати, да. - SciFi(24.11.2018 19:34)
- Предлагаю принести в студию в двоичном виде байты и биты (с номерами) образцов реально полученного положительного и отрицательного числа, мы тут быстро разберёмся. - SciFi(24.11.2018 17:49)
- а для положительных чисел вот типовой пример. Уровнемер передает мне три байта - 0x83, 0x9A, 0x42. Т.е. получаем массив - 0x00, 0x83, 0x9A, 0x42. После этого получается out=77,2558594. Я дальше беру число для индикации - 7725. Вопрос только в этом Лагунов(30 знак., 25.11.2018 07:04)
- положительное 0x42, отрицательное 0xС2 - Vit(25.11.2018 07:36)
- спасибо, значит последний байт - старший :-) - Лагунов(25.11.2018 09:52)
- 0x429A8300 - Vit(25.11.2018 10:45)
- да, именно так. Сейчас смоделировал. Перед преобразованием сбрасываю ст. бит в 0хС2. И устанавливаю признак минуса для индикации. Всё получилось. У меня вбито предыдущими годами в 8-битнике (Z8), что старший байт - в начале с меньшим адресом. :-) - Лагунов(25.11.2018 10:51)
- Почитайте на досуге про больших и малых индейцев. Будет увлекательно. - SciFi(25.11.2018 10:03)
- Человек, работающий в эмбеддеде и не знающий про индейцев - страшное сочетание - lloyd(25.11.2018 10:19)
- и чего? Шерлок Холмс тоже знал только то, что ему сегодня надо знать. - Лагунов(25.11.2018 13:48)
- Кстати, исторически сложилось так, что в сетевых протоколах гоняют старший байт первым. Эти ваши монополисты с уровнемерами не по канону делают. Раскольники они. - SciFi(25.11.2018 14:40)
- Ну да, и больше одной архитектуры МК ему никогда в жизни не понадобится. - lloyd(25.11.2018 14:06)
- Этот стервец Холмс вообще без МК обходился... - SciFi(25.11.2018 14:35)
- и чего? Шерлок Холмс тоже знал только то, что ему сегодня надо знать. - Лагунов(25.11.2018 13:48)
- Человек, работающий в эмбеддеде и не знающий про индейцев - страшное сочетание - lloyd(25.11.2018 10:19)
- 0x429A8300 - Vit(25.11.2018 10:45)
- спасибо, значит последний байт - старший :-) - Лагунов(25.11.2018 09:52)
- положительное 0x42, отрицательное 0xС2 - Vit(25.11.2018 07:36)
- беда как раз с отрицательными. Я их ни разу живьем не видел. Вот на неделе приеду в поле к резервуару и уровнемеру - попробую зафиксировать. - Лагунов(25.11.2018 06:44)
- а для положительных чисел вот типовой пример. Уровнемер передает мне три байта - 0x83, 0x9A, 0x42. Т.е. получаем массив - 0x00, 0x83, 0x9A, 0x42. После этого получается out=77,2558594. Я дальше беру число для индикации - 7725. Вопрос только в этом Лагунов(30 знак., 25.11.2018 07:04)
- У тебя преобразование типов float -> UNSIGNED!!! int. При отрицательном float-e результат неопределен. - il-2(24.11.2018 19:03)
- У меня сейчас всё выглядит примерно так. Лагунов(201 знак., 24.11.2018 17:31)
- Положение запятой определяет не мантисса, а порядок (у вас на него два байта отведено). - Скрипач(24.11.2018 17:22)
- Ну допустим, а как будет выглядеть sprintf в таком случае? У меня там числа с величинами от 1 до 2 знаков до запятой и до 3 знаков после запятой. И как тогда в результате будет знак? - Лагунов(24.11.2018 17:19)
- Отдельным битом знак (на первой же вашей странице формула) - Скрипач(24.11.2018 16:37)
- Так мне непонятно вот что. У меня перед глазами масса отчетов в 24-битном формате. И в заведомо положительном значении числа старший бит в старшем байте может быть как 0 так и 1. При близких значениях самого числа. Или речь про младший бит в ихнем Лагунов(44 знак., 24.11.2018 17:24)
- Честно - немного не трезв, но там где-то (то ли в начале,то ли в конце) два байта - "порядок". вот между ним и мантиссой и идет ваш заветный битик :) Скрипач(133 знак., 24.11.2018 17:28 - 17:46)
- Там ещё большие и малые индейцы, но скорее всего "как у интеля". - SciFi(24.11.2018 17:46)
- Честно - немного не трезв, но там где-то (то ли в начале,то ли в конце) два байта - "порядок". вот между ним и мантиссой и идет ваш заветный битик :) Скрипач(133 знак., 24.11.2018 17:28 - 17:46)
- Так мне непонятно вот что. У меня перед глазами масса отчетов в 24-битном формате. И в заведомо положительном значении числа старший бит в старшем байте может быть как 0 так и 1. При близких значениях самого числа. Или речь про младший бит в ихнем Лагунов(44 знак., 24.11.2018 17:24)
- А чего парится?! дополнить нулем и имеем классический флоат. Помню с начальной школы: "Если тупишь, используй формальные методы". Формализуем задачу: Тип не определенный в компиляторе. Значит необходимо определить сам тип (typedef) и определить IBAH(172 знак., 24.11.2018 19:44)