Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
1

Расшифровка ответа прибора hex в float

16.02.2018, 11:55. Показов 1225. Ответов 6

Всем привет!
Пробую опросить счетчик Меркурий.

Ответ на запрос присылает мне:
Код
084600d07b
ffffffff2800ec3600008a182400631b
ffffffff1500775d0000930500000000
ffffffff000000000000000000000000
ffffffff00000000000000006a003397
ffffffff3d00639400001d1e293b
В этом hex храниться значения четырех тарифов, и сумма либо тоже тут, либо суммируются полученные результаты...
Помогите написать функцию по получению значений 4-х тарифов.
Из этого hex знаю что ответ приведенный должен выглядеть:
Тариф 1 = 4618.145996
Тариф 2 = 2366.306884
Тариф 3 = 0
Тариф 4 = 0
Сумма = 6984.453125
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.02.2018, 11:55
Ответы с готовыми решениями:

Расшифровка HEX файла
Здравствуйте форумчане. Нужна ваша помощь, перерыл интернет, но так и не нашел решения. Есть файл с...

Расшифровка ответа
делаю get заброс таким образом <?php function get($url) { $ch = curl_init($url); ...

Максимально компактная расшифровка байт ответа
Добрый день , может кто может предложить алгоритм расшифровки ? приходит байт ответа , его надо...

Конвертирование HEX to Float
Подскажите как конвертировать HEX в Float и наоборот Float в HEX

6
Эксперт Python
4534 / 1961 / 352
Регистрация: 17.03.2012
Сообщений: 9,873
Записей в блоге: 5
16.02.2018, 13:15 2
А в чём трабла?
Вам вот тут Преобразовать hex ответ в float накидали вариантов, просто перебирайте и вперёд.
Судя по стабильным нулям в середине - где-то надо разбить и взять фрагмент.
Помните, что числа бывают не только float (4 байта), но и double (8 байт). Бывают и ещё больше, но редко.
0
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
16.02.2018, 14:07  [ТС] 3
Я на основе того поста короткие ответы приборы разобрал (расшифровал) и привел к нормальному виду.
А в этом ответе счетчика не получается подобрать... Поэтому и прошу помощи
0
671 / 503 / 199
Регистрация: 10.12.2016
Сообщений: 1,297
16.02.2018, 14:30 4
а ты протокол видел? там не только показания
https://ab-log.ru/smart-house/mercury-230
0
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
16.02.2018, 15:14  [ТС] 5
Цитата Сообщение от vic5710 Посмотреть сообщение
а ты протокол видел? там не только показания
https://ab-log.ru/smart-house/mercury-230
Там запросы на текущие значения счетчика, Напряжение, ток, это я читаю из коротких ответов.

А вот накопительное значение эл.энергии можно получить по запросу выше, как я понял.
Я использовал OPC сервер и serial port monitor. При чтении суммы энергии прибор отвечает пакетом (тот что в начале поста).
Быстрый подбор расшифровать ответ не получается...

Нашел из протокола обмена (могу ошибаться, может речь идет о другом):
Пофазные значения накопленной активной энергии прямого направления 12 байт.
Если поле данных ответа содержит 12 байт, то отводится по четыре двоичных байта на каждую фазу энергии А+ в последовательности: активная прямая по 1 фазе, активная прямая по 2 фазе, активная прямая по 3 фазе.
Добавлено через 10 минут
Протокол обмена Меркурий 236.

Там примеры разбора ответов прибора по другим запросам есть, а вот про накопительную эл.энергию нету...
0
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
19.02.2018, 10:30  [ТС] 6
UP!

Нашел другую команду для опроса суммы Энергии.
Получаю ответ: 6e 00 a2 d1 ff ff ff ff 40 00 54 72 00 00 41 21
Расшифровка ответа прибора hex в float

Получается разбиваем ответ:
6e 00 a2 d1
ff ff ff ff = 0
40 00 54 72
00 00 41 21 = 8513 / 1000 = 8.513

Как быть с остальными?
Расшифровка ответа прибора hex в float
0
0 / 0 / 2
Регистрация: 27.11.2013
Сообщений: 78
19.02.2018, 11:15  [ТС] 7
Получилось!
В итоге порядок 6ed1a2
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2018, 11:15

float в HEX и обратно
У меня возникли трудности с конвертацией числа типа float (например 2.534) в 4 байта HEX (например...

Hex (3 byte) to Float
С внешнего устройства приходят данные 40 00 00, 40 80 00, 7F FF FF и тп. Известно, что 7 бит...

Привести Float к raw hex
Вопрос на зубок. Не смог найти конкретного ответа. Метод Float.toHexString() возвращает константу...

Функция перевода из Float в Hex
Подскажите функции для перевода вещественного числа в шестнадцатеричное число, и будет ли она...

Калькулятор Float To Double Hex
В общем, нужно создать калькулятор FLOAT 2 DOUBLE HEX. Обрыл весь интернет - ничего нет. Не...

Преобразовать hex ответ в float
Всем привет. Пробую опросить устройство с помощью python2. Получаю ответ в виде hex: 10 01 90...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.