function Decode(fPort, bytes) {
var jsonobj;
var result = 0;
var myDate = new Date();
var current_time = myDate.toLocaleString();
var hexBytes = new Array();
var rawData = "";
for(var i = 0; i < bytes.length; i++) {
rawData += bytes[i] + " ";
}
if (bytes.length = 19) {
jsonobj = {
"Flag": 1,
"SensorType": 43,
"SensorNumberThird": 0,
"Temperature": parseTemperature(bytes),
"Value": parseValue(bytes),
"Timestamp": current_time,
"rawData": rawData,
"length": bytes.length
};
} else {
jsonobj = {
"Flag": -1,
"SensorType": 43,
"SensorNumberThird": 0,
"Timestamp": current_time,
"rawData": rawData,
"length": bytes.length
};
}
return jsonobj;
}
function parseTemperature(bytes) {
var tempBinVal = intToBinary(bytes[11], 8) + intToBinary(bytes[12], 8);
if (tempBinVal.substring(0, 1) == '0') {
return parseInt(tempBinVal, 2) / 16;
} else {
return binToComplement(tempBinVal, 16) * -1 / 16;
}
}
function parseValue(bytes) {
var xBinVal = intToBinary(bytes[13], 8) + intToBinary(bytes[14], 8)
+ intToBinary(bytes[15], 8)
+ intToBinary(bytes[16], 8);
if (xBinVal.substring(0, 1) == '0') {
return parseInt(xBinVal, 2);
} else {
return binToComplement(xBinVal, 16) * -1;
}
}
function intToBinary(value, length) {
var number = value.toString(2);
return (Array(length).join("0") + number).slice(-length);
}
function binToComplement(value, length) {
var binVal = (Array(length).join("0") + value).slice(-length);
if (binVal.substring(0, 1) == '0') {
return parseInt(binVal, 2);
}else {
var array = binVal.substring(1, length).replace('-',0).split('');
for(var i=0; i<array.length; i++) {
array[i] = array[i] == '0' ? '1' : '0';
}
return parseInt(array.join(''), 2) + 1;
}
}
console