Blick auf die folgende Bibliothek:
https://sourceforge.net/p/calimero/wiki/Home/
Es bietet eine Java-API auf den KNX-Netzwerk und seine Datentypen. Dies wird wahrscheinlich tun, was Sie wollen - speziell die tuwien.auto.calimero.dptxlator.DPTXlator2ByteFloat
Klasse.
können Sie diesen Code verwenden:
byte[] test = new byte[2];
test[0] = (byte)0x0D;
test[1] = (byte)0x82;
DPTXlator2ByteFloat floatTranslator = new DPTXlator2ByteFloat(DPTXlator2ByteFloat.DPT_AIR_PRESSURE);
floatTranslator.setData(test);
double value = (double)floatTranslator.getValueFloat();
die value
Variable den Wert 28,2 als erwartet haben.
Importieren Sie die folgenden in Ihrer Maven Abhängigkeiten, die Bibliothek schließen:
<dependency>
<groupId>com.github.calimero</groupId>
<artifactId>calimero-core</artifactId>
<version>2.2-beta</version>
<dependency>
Hoffnung, das hilft.
Floats sind 4 Bytes, nicht 2. Double sind 8 Bytes. Was ist das mysteriöse 2-Byte-Float? – Kayaman
28,2 im traditionellen IEEE-Float-Standard ist 0x41e1999a. Welcher Standard erzeugt diese 2 Bytes? Aus welchem Quellsystem/welcher Architektur stammt dieser "Float"? –
Ich versuche, diesen 2 Bytes Float-Wert zu konvertieren, der von der KNX-Busspur auf den doppelten Wert kommt. KNX sendet 2 Bytes float, wenn er mit Java arbeitet. – rdvnbl