Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2013, 16:11   #1
Ben_Vaflick
Новичок
Джуниор
 
Регистрация: 20.02.2013
Сообщений: 2
По умолчанию Преобразование числа с плавающей точкой

Доброго времени суток. Такое дело. Есть 3 датчика угловой скорости, по одному на каждую ось. интерфейс рс-485. Через преобразователь рс-485/рс-232 подключены датчики к компу. Ведущий датчик выдает по 50 байт в порт. 2 из которых - это ключ, и по 4 байта на каждый показатель для каждого датчика. Каждый датчик выдает по 4 показателя. итого получается 4*4*3+2=50. Задача раз в минуту открывать порт, ловить ключ, после ключа считывать данные и сохранять в файл в удобочитаемом виде. На деле я электронщик, поэтому дальше, чем считывания с порта и сохранения этих данных в файл, я не дошёл.
Вот пример двух раз считывания:
AA 55 75 A4 CD BB 00 40 C9 41 CE 70 85 45 74 E7 B3 C1
9D 55 5C BC 00 40 CA 41 28 E8 81 45 E1 CE BE C1
0C 71 75 BC 00 40 C9 41 DF 01 B8 45 22 E4 15 40

AA 55 44 6E BB BB 00 40 C9 41 CA 70 85 45 E7 EB B3 C1
F6 56 5E BC 00 C0 C9 41 23 E8 81 45 D0 BF BE C1
D7 59 6B BC 00 00 CA 41 DF 01 B8 45 25 97 15 40
АА и 55 - это ключ. Как мне сделать теперь преобразование этих данных, чтобы в получились обычные десятичные дроби?
Ben_Vaflick вне форума Ответить с цитированием
Старый 05.09.2013, 21:33   #2
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Если считать 4 байта с плавающей точкой как совместимые с IEEE, подойдет сопроцессорный тип Single:
Код:
type
  TIndicatorValue = packed record
    case Byte of
      0: (AsFloat: Single);
      1: (AsBytes: LongWord);
  end;

  TIndicatorState = array[0..3] of TIndicatorValue;

  T50BytesRec = packed record
    MagicSign: Word;
    IndicatorStates: array[0..2] of TIndicatorState;
  end;

var
  FiftyBytes: T50BytesRec;
begin
  // ReadIndicatorStates(FiftyBytes);
  FiftyBytes.IndicatorStates[0, 0].AsBytes := $BBBB446E; // 44 6E BB BB
  ShowMessage(FloatToStr(FiftyBytes.IndicatorStates[0, 0].AsFloat)); // 0-е значение 0-го датчика
end;
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование чисел с плавающей точкой в буквенный формат Петр Петрович C# (си шарп) 2 26.06.2012 13:04
Числа с плавающей точкой [MI_nor] Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.04.2011 11:53
числа с плавающей точкой cleversleazoid Общие вопросы C/C++ 5 30.12.2010 00:43
Преобразование чисел с плавающей точкой Ko3blpb Общие вопросы C/C++ 3 22.12.2009 21:19
Преобразование числа с плавающей точкой в строку Sibedir Общие вопросы Delphi 14 09.03.2008 21:48