Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.18;
Скачать: CL | DM;

Вниз

RS-232 возвращает данные в формате float. Как перевести?   Найти похожие ветки 

 
Priest   (2009-08-21 13:03) [0]

Есть устройство. И мой компонент. В него приходит в виде строки данные в формате флоат 4 байта. Как перевести в обычное представление?


 
MBo ©   (2009-08-21 13:07) [1]

"флоат 4 байта" называется в Дельфи single. Или что-то другое имеется в виду?


 
Kolan ©   (2009-08-21 13:07) [2]

Вам надо узнать как этими 4 байтами кодируют число, иначе у вас ничего не получится.

Функция перекодировки может быть примерно такой:

procedure ConvertBytesToFloat(HighByte1, HighByte2,
 LowByte1, LowByte2: Byte; var Value: Single);
var
 TempArr: array[0..3] of Byte;
   TemVal: Single absolute TempArr;
begin
 TemVal := 0;
 TempArr[0] := HighByte1;
 TempArr[1] := HighByte2;
 TempArr[2] := LowByte1;
 TempArr[3] := LowByte2;
 Value := TemVal;
end;


 
Priest   (2009-08-21 13:09) [3]

не то. на весах показан вес например 20.99 а мне возвращается в шестнадцатиричной форме AB CD AA CC. Т.е. у меня 4 байта, но когда возвращается строка, то выглядит как "мусор". Как перевести?


 
Priest   (2009-08-21 13:12) [4]

Вот у меня что есть из инструкции


Формат команды (запроса):
1  2  3 4
W 0 X 1     - всё в символьном виде

1- символ синхронизации (символ “W”)
2- номер терминала (“0…9”, по умолчанию “0”)
3- команда
4- параметр команды (“1…9 : ; <”)

Формат ответа:
4 байта данных

Основные команды
G – считывание показаний весов (с учётом дискретности индикации)
Вариант запроса : W0GX
Ответ: 4 байта float


 
Медвежонок Пятачок ©   (2009-08-21 13:13) [5]

Ответ: 4 байта float

ну и где здесь якобы строка?


 
Kolan ©   (2009-08-21 13:19) [6]

Наверно вам приходит 8 шестнадцатеричных символов? Тогда превратите их сначала в байты, а потом см.  [2]


 
Priest   (2009-08-21 13:27) [7]

Спасибо всем за помощь. счас буду пробовать


 
Kolan ©   (2009-08-21 13:29) [8]

Вам надо узнать у разработчика весов что эти 4 байта значат и как их интерпретировать.


 
Priest   (2009-08-21 15:37) [9]

Всем спасибо за помощь. Код из [2]  работает.


 
Kolan ©   (2009-08-21 15:55) [10]

Кстати в два можно проще, если испльзовать Result вместо TemVal.



Страницы: 1 вся ветка

Текущий архив: 2009.10.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
15-1249326864
TStas
2009-08-03 23:14
2009.10.18
Где Ворд хранит словарь?


2-1250248366
Dymok
2009-08-14 15:12
2009.10.18
Как автоматически ставить пробел после запятой


1-1220342126
Vlad Oshin
2008-09-02 11:55
2009.10.18
Как получить список dll, которые использует мое приложение?


2-1250148554
Alex_Ford
2009-08-13 11:29
2009.10.18
Программно установить cbCustomColor для ColorBox равным True


2-1250593303
Miklyha
2009-08-18 15:01
2009.10.18
Не срабатывает Form1.Close;