Ещё один реальный вариант дал в 17 сообщении, только вы даже не смотрели его.
Вид для печати
Да вроде нормальный ST:
Вложение 77895
И функция сдвига стандартная...
прочтите документацию, например функции сдвига
Вам вообще то предлагали код формирования вещественного числа, да это сложно, но простой вариант не получится
примерно так должно получится требуемое числоКод: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;
что касается этого утверждения
У Вас же получалось с ComPortByte, который сразу возвращает массив байт, поэтому все и спрашивают зачем строки
Понятно. Как потом из двух WORD собрать REAL ?
А чем ТС не устраивает объединение:
Вложение 77897
В ответном массиве куча байт, а мне нужно только 4. Поэтому вырезать их реально с помощью STRING. Есть другой способ? Подскажи.
ФБ "ComPortByte" выдаёт массив. Его в STRING и обрезаю. Ещё не делал, но думаю получится. Можно из массива сразу убрать лишнее? Подскажи.
Вот ответ
11 57 35 85 01 0E EA 59 06 3D 01 00 B9 2D
и в нём сидит цифра 0.0328006
Т.е. EA 59 06 3D
Вам сложно из массива использоовать с 6 по 9 элементы?
Вложение 77898
Не сложно. Каждый из 4-х элементов массива присвоить переменной?
Ну это уже детали. Сейчас опробую алгоритм, который Вы прислали.
Головняк, конечно, ещё тот, с этими преобразованиями. Знал, что не будет легко, но чтоб так ...