PDA

Просмотр полной версии : ТРМ138 чтение/запись уставки 'c.sP'



Friencis
03.02.2011, 08:53
Здравствуйте.
Подскажите, пожалуйста, оптимальный алгоритм чтения/записи параметра 'c.sP' (уставка) в приборе ТРМ138В на Delphi 7 с помощью библиотеки owen_io.dll.

Причина вопроса.
Если в конфигураторе задать уставку 1 градус, то по формуле п. 5.1.2 Описания протокола получаю число "26". Число "4" и далее читаются нормально. Не могу выявить однозначную зависимость и алгоритм формирования чисел.

Буду копать дальше, конечно, но хотелось бы не изобретать колесо, а использовать решение специалистов.

Спасибо.

Friencis
03.02.2011, 09:13
На всякий случай привожу фрагмент своего кода.

var i, j, Addr: Cardinal;
pc: array[0..127] of Char;
val: cardinal;
znak: byte;
Exponent: byte;
Mantiss: word;
Result: real;
temp: word;
begin
StatusBar1.Panels[0].Text:='';
StatusBar1.Panels[1].Text:='';
try
Addr:=StrToInt(edAddr.Text);
except
exit;
end;
// 'c.sP' Уставка Целый с десятичной точкой
i:=0;
try
i:=ReadUInt(Addr, 0, 'c.sP', val, -1);
except
end;

znak:=Hi(val) and ($80);
Exponent:=Hi(val) and ($70);
Mantiss:=(val and $0FFF);
{}
Result:=Mantiss;
for j:=1 to Exponent do
Result:=Mantiss/10;
if znak=1 then Result:=Result * (-1);
{}
lblUstavka.Caption:=FormatFloat('0.00', Result);
{}
LastErrToStr(pc);
lblErr1.Caption:=IntToStr(i)+' '+pc;
StatusBar1.Panels[0].Text:=IntToStr(i);
StatusBar1.Panels[1].Text:=pc;

Friencis
03.02.2011, 10:57
Вопрос снят, работаю с обычными целыми.