-
Вопросы по ТРМ201
Добрый день!
Возникли вопросы по работе с прибором ТРМ201:
В качестве управляющей программы использую ваш конфигуратор ТРМ2хх. Просматриваю обмен данными с помощью программы portmon.
Например:
Установка заданного значения 10,0:
Записывается:
23 48 47 47 4C 50 48 47 4E 4B 48 49 47 47 47 47 47 47 47 52 4F
# 10 05 91 07 41 20 00 00 00 00 B8
10 - адрес 16
05 - бит запроса не установлен
91 07 - команда
Вопросы:
1)Как превращается 41 20 00 00 00 в 10,0 ?
2) Как в данном случае расчитывается контрольная сумма?
Использовал вашу функцию подставлял все байты со 2-го по контрольную сумму, но получается другая.
Не могли бы Вы прислать готовые примеры функций(С,С++) по работе с прибором на a_sorokin@list.ru .
-
на самом деле, передается #HGGLPHGNKHIGGGGGGGROOU\xD, что при распаковке дает:
10 05 91 07 41 20 00 00 00 b8 8e
41 20 00 - это значение
00 00 - индекс (используется с конфигурационными параметрами)
b8 8e - контрольная сумма
10,0 получается так:
Код:
void unpackFloat24(unsigned char* data, size_t dataSize, float* value)
{
char *p;
assert(data);
assert(dataSize == 3);
assert(value);
*value = 1.0f;
p = (char *)(void *)value;
/* для x86 меняем порядок байт */
p[0] = 0;
p[1] = data[2];
p[2] = data[1];
p[3] = data[0];
}
-
Большое спасибо за объяснения и примеры!