Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.027 c
2-1250318652
Константинов
2009-08-15 10:44
2009.10.18
работа с файлами *.adt и *.adi


15-1250195405
Юрий
2009-08-14 00:30
2009.10.18
С днем рождения ! 14 августа 2009 пятница


15-1250146126
Mar$ell
2009-08-13 10:48
2009.10.18
Microsoft SQL Server 2008 Express Edition with Tools


2-1250844383
hinst
2009-08-21 12:46
2009.10.18
Загрузка dll из TMemoryStream


15-1250014166
Kerk
2009-08-11 22:09
2009.10.18
Все-таки есть бритвы, а есть Бритвы...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский