kopia lustrzana https://github.com/lightaprs/LightTracker-1.0
31 wiersze
1.0 KiB
JavaScript
31 wiersze
1.0 KiB
JavaScript
function Bytes2Float32(bytes) {
|
|
var sign = (bytes & 0x80000000) ? -1 : 1;
|
|
var exponent = ((bytes >> 23) & 0xFF) - 127;
|
|
var significand = (bytes & ~(-1 << 23));
|
|
|
|
if (exponent == 128)
|
|
return sign * ((significand) ? Number.NaN : Number.POSITIVE_INFINITY);
|
|
|
|
if (exponent == -127) {
|
|
if (significand == 0) return sign * 0.0;
|
|
exponent = -126;
|
|
significand /= (1 << 22);
|
|
} else significand = (significand | (1 << 23)) / (1 << 23);
|
|
|
|
return sign * significand * Math.pow(2, exponent);
|
|
}
|
|
|
|
function Decoder(bytes, port) {
|
|
var latitude = bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
|
|
var longitude = bytes[7] << 24 | bytes[6] << 16 | bytes[5] << 8 | bytes[4];
|
|
var altitude = bytes[11] << 24 | bytes[10] << 16 | bytes[9] << 8 | bytes[8];
|
|
var accuracy = bytes[15] << 24 | bytes[14] << 16 | bytes[13] << 8 | bytes[12];
|
|
|
|
return{
|
|
latitude : Bytes2Float32(latitude),
|
|
longitude : Bytes2Float32(longitude),
|
|
altitude : Math.round(Bytes2Float32(altitude)),
|
|
accuracy : Bytes2Float32(accuracy),
|
|
};
|
|
}
|