AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Temperaturwert in Double umwandeln

Ein Thema von OlliWW · begonnen am 26. Jan 2022 · letzter Beitrag vom 28. Jan 2022
 
OlliWW

Registriert seit: 31. Aug 2011
153 Beiträge
 
#1

Temperaturwert in Double umwandeln

  Alt 26. Jan 2022, 09:21
Delphi-Version: 5
Hallo,

Ich suche gerade einen einfachen Weg mit Delphi einen Temperaturwert, der über eine Schnittstelle kommt, in einen Double umzuwandeln.

Gesendet wird er in 2 Byte Werten, hier ein Beispiel:

LowerByte: $50
HigherByte: $05

Als Ergebnis müsste rauskommen: +5,3125°C.

Berechnet wird das im Zweikomplement:

Higherbyte:
bit7: sign (also Positiv oder Negativ)
bit6: 64 °C.
bit5: 32 °C.
bit4: 16 °C.
bit3: 8 °C.
bit2: 4 °C.
bit1: 2 °C.
bit0: 1 °C.

Für: $05 kommt 5 (Grad Celsius) raus

LowerByte:
bit7: 1/2 °C.
bit6: 1/4 °C.
bit5: 1/8 °C.
bit4: 1/16 °C.
bit3-0: keine Bewertung

Für $50 kommt 0,3125 raus

zusammen addiert: 5,3125

Um das Higherbyte umzuwandeln habe ich bereits einen kurzen Weg gefunden:
Delphi-Quellcode:
  iHigherByte: Integer;
  sHigherByte: ShortInt absolute iHigherByte;
Weise ich iHigherByte nun $50 zu, wird dies korrekt umgewandelt. Aber irgendwie tue ich mich mit der Nachkommastelle schwer. Ich kann natürlich einen Loop schreiben und das händisch auswerten und addieren.

Gibt es dazu einen kürzeren Weg?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz