Ajout du décodeur de trame en JS
This commit is contained in:
parent
5a9b496503
commit
95152f5a65
74
doc/decodeur.js
Normal file
74
doc/decodeur.js
Normal file
@ -0,0 +1,74 @@
|
||||
/**
|
||||
* Anatole SCHRAMM-HENRY
|
||||
* Tim THUREL
|
||||
* GROUPE 3
|
||||
**/
|
||||
|
||||
function DecodeByteFirstHalf(data) //Data de type byte
|
||||
{
|
||||
return data & 0x0F;
|
||||
}
|
||||
|
||||
function DecodeByteSecondHalf(data) //Data de type byte
|
||||
{
|
||||
return data >> 4;
|
||||
}
|
||||
|
||||
function DecodeDatePart(data, index)
|
||||
{
|
||||
return {
|
||||
year : data[index]+2000,
|
||||
month : data[index+1],
|
||||
day : data[index+2],
|
||||
hour : data[index+3],
|
||||
minute : data[index+4],
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
//10 bits (1 de signe et 9 de valeur) pour
|
||||
//la partie entière et 6 bits pour la partie fractionnaire
|
||||
function DecodeQ10_6(data, index)
|
||||
{
|
||||
var temp = (data[index] << 8) | data[index + 1];
|
||||
|
||||
//Regarde si la valeur et positive ou négative
|
||||
if((temp & 0x8000) !== 0)
|
||||
{
|
||||
//Valeur négative on fait le complément à deux
|
||||
temp = ~temp;
|
||||
temp &= 0x7FFF ;
|
||||
temp++;
|
||||
temp *= -1*Math.pow(2,-6);
|
||||
}
|
||||
else
|
||||
temp *= Math.pow(2,-6);
|
||||
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
function Decoder(bytes, port) {
|
||||
// Decode an uplink message from a buffer
|
||||
// (array) of bytes to an object of fields.
|
||||
var listToReturn = {}, decoded = {}, sensorNbr = 0;
|
||||
|
||||
decoded.packetNbr = DecodeByteFirstHalf(bytes[0]);
|
||||
decoded.packetId = DecodeByteSecondHalf(bytes[0]);
|
||||
decoded.sensorRow = DecodeByteFirstHalf(bytes[1]);
|
||||
decoded.sensorCol = DecodeByteSecondHalf(bytes[1]);
|
||||
sensorNbr = decoded.sensorRow * decoded.sensorCol;
|
||||
|
||||
var date = DecodeDatePart(bytes, 2);
|
||||
|
||||
for (var attrname in date) { decoded[attrname] = date[attrname]; }
|
||||
|
||||
for(i = 0; i < sensorNbr*2; i+=2)
|
||||
{
|
||||
decoded["t_"+Number(i/2+1)] = DecodeQ10_6(bytes, 7+i);
|
||||
}
|
||||
|
||||
listToReturn[0] = decoded;
|
||||
|
||||
return listToReturn;
|
||||
}
|
Loading…
Reference in New Issue
Block a user