henrproject
Nieuwe gebruiker
- Lid geworden
- 2 nov 2016
- Berichten
- 4
Hallo,
Ik heb een voorbeeld waarin staat wat een uitkomst moet zijn van een stukje serial rs485 return bericht :
voorbeeld in handleiding :
34 31 43 38 30 30 30 30 Battery temperature-float: 0000c841=25 ( waarbij 25 dan de temperatuur in Celcius is )
Hoe ziet een dergelijke code er uit in javascript.
of hoe maak ik van 0000c841 ( hex ? ) dat de uitkomst 25 is ?
ik heb zeer weinig know how van programmeren, maar ik begrijp wel dat ik volgens mij te maken heb met (4byte)Float , little or big endian, Hex en reverse materie.
alleen hoe ?
EDIT : oplossing ( even algemeen gemaakt )
( sometimes there is the need to flip the bytes/Hex to become the right input )
for example :
Ik heb een voorbeeld waarin staat wat een uitkomst moet zijn van een stukje serial rs485 return bericht :
voorbeeld in handleiding :
34 31 43 38 30 30 30 30 Battery temperature-float: 0000c841=25 ( waarbij 25 dan de temperatuur in Celcius is )
Hoe ziet een dergelijke code er uit in javascript.
of hoe maak ik van 0000c841 ( hex ? ) dat de uitkomst 25 is ?
ik heb zeer weinig know how van programmeren, maar ik begrijp wel dat ik volgens mij te maken heb met (4byte)Float , little or big endian, Hex en reverse materie.
alleen hoe ?
EDIT : oplossing ( even algemeen gemaakt )
Code:
//extract usable data from the returned Hex
function hex2float(num) {
var sign = (num & 0x80000000) ? -1 : 1;
var exponent = ((num >> 23) & 0xff) - 127;
var mantissa = 1 + ((num & 0x7fffff) / 0x7fffff);
return sign * mantissa * Math.pow(2, exponent);
}
//make it a nice 4 digits number
function roundToTwo(num) {
return +(Math.round(num + "e+2") + "e-2");
}
print or whatever (roundToTwo(hex2float("0x"+<yourhexInput>)));
( sometimes there is the need to flip the bytes/Hex to become the right input )
for example :
Code:
function swap32(val) {
return ((val & 0xFF) << 24)
| ((val & 0xFF00) << 8)
| ((val >> 8) & 0xFF00)
| ((val >> 24) & 0xFF);
}
Laatst bewerkt: