
Сообщение от
Vetal10
Смотрел. На каком это языке? Что такое "shl" ? Как это применимо к ST ?
прочтите документацию, например функции сдвига
Вам вообще то предлагали код формирования вещественного числа, да это сложно, но простой вариант не получится
Код:
VAR
inpW0, inpW1 :DWORD;
stuff: ARRAY [0..3] OF BYTE := 234,89,6,61;
k : REAL;
sign : REAL;
exponent : REAL;
mant_mult : REAL;
stuffAdd : DWORD;
exp_raw : DWORD;
mantissa : DWORD;
i : INT;
negative : BOOL;
arrWToReal : REAL;
END_VAR
inpW1 :=SHL(BYTE_TO_WORD(stuff[3]),8) OR BYTE_TO_WORD(stuff[2]);
inpW0 :=SHL(BYTE_TO_WORD(stuff[1]),8) OR BYTE_TO_WORD(stuff[0]);
stuffAdd := SHL(inpW1, 16) + inpW0;
negative := SHR(stuffAdd, 31) > 0;
mant_mult := 1.0;
IF negative THEN
sign := -1.0;
ELSE
sign := 1.0;
END_IF;
exp_raw := SHR((stuffAdd MOD 2147483648), 23);
exponent := DWORD_TO_REAL(exp_raw) - 127;
mantissa := stuffAdd MOD 8388608;
FOR i := 0 TO 22 DO
IF (SHR(mantissa, (22 - i)) MOD 2) = 1 THEN
k := INT_TO_REAL(23 - (22 - i));
mant_mult := mant_mult + 1/(EXPT(2,k));
END_IF;
END_FOR;
arrWToReal := sign * (EXPT(2, exponent)) * mant_mult;
примерно так должно получится требуемое число
что касается этого утверждения

Сообщение от
Vetal10
Есть 4 байта вырванных из ответа прибора в виде STRING.
У Вас же получалось с ComPortByte, который сразу возвращает массив байт, поэтому все и спрашивают зачем строки