PDA

Просмотр полной версии : Вопросы по ТРМ201



_AS
13.09.2007, 17:46
Добрый день!

Возникли вопросы по работе с прибором ТРМ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 .

Дмитрий Егоренков
14.09.2007, 11:17
на самом деле, передается #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];
}

_AS
14.09.2007, 19:23
Большое спасибо за объяснения и примеры!