Главная страница
    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.84 MB
Время: 0.038 c
1-1217338897
9899100
2008-07-29 17:41
2009.10.18
WindowState


10-1160503048
WQSing
2006-10-10 21:57
2009.10.18
name по dispid


1-1218043397
ПЗ
2008-08-06 21:23
2009.10.18
В продолжение темы про DLL-классы на Delphi и MSVC. Нужен совет!


3-1227770209
alexnmsk
2008-11-27 10:16
2009.10.18
Microsoft SQL Server и RAISERROR


15-1250623324
{RASkov}
2009-08-18 23:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский