function Decode(fPort, bytes) {
var jsonobj;
var result = 0;
var myDate = new Date();
var current_time = myDate.toLocaleString();
if (bytes.length >= 41) {
jsonobj = {
"Flag": 1,
"SensorType": 43,
"SensorNumberThird": 0,
"X": parseX(bytes),
"Y": parseY(bytes),
"Temperature": parseTemperature(bytes),
"Timestamp": current_time
};
} else {
jsonobj = {
"Flag": -1,
"SensorType": 43,
"SensorNumberThird": 0,
"Timestamp": current_time
};
}
return jsonobj;
}
function parseTemperature(bytes) {
var tempBinVal = hexToBinary(bytes[7], 8) + hexToBinary(bytes[8], 8);
if(tempBinVal.substring(0, 1) == '0') {
return parseInt(tempBinVal, 2) *(0.1);
}else {
return binToComplement(tempBinVal, 16) * (-1 * 0.1);
}
}
function parseX(bytes) {
var xBinVal = hexToBinary(bytes[9], 8) + hexToBinary(bytes[10], 8);
if(xBinVal.substring(0, 1) == '0') {
return parseInt(xBinVal, 2) *(0.01);
}else {
return binToComplement(xBinVal, 16) * (-1 * 0.01);
}
}
function parseY(bytes) {
var yBinVal = hexToBinary(bytes[11], 8) + hexToBinary(bytes[12], 8);
if(yBinVal.substring(0, 1) == '0') {
return parseInt(yBinVal, 2) *(0.01);
}else {
return binToComplement(yBinVal, 16) * (-1 * 0.01);
}
}
function hexToBinary(value, length) {
var intValue = parseInt(value, 16);
return intToBinary(intValue, length);
}
function intToHex(value, length) {
var number = value.toString(16);
return (Array(length).join("0") + number).slice(-length);
}
function intToBinary(value, length) {
var number = value.toString(2);
return (Array(length).join("0") + number).slice(-length);
}
function hexToASCII(hexCharCodeStr) {
var trimedStr = hexCharCodeStr.trim();
var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
var len = rawStr.length;
if (len % 2 !== 0) {
console.info("存在非法字符!");
return "";
}
var curCharCode;
var resultStr = [];
for (var i = 0; i < len; i = i + 2) {
curCharCode = parseInt(rawStr.substr(i, 2), 16);
resultStr.push(String.fromCharCode(curCharCode));
}
return resultStr.join("");
}
function binToComplement(value, length) {
var binVal = (Array(length).join("0") + value).slice(-length);
if(binVal.substring(0, 1) == '0') {
return parseInt(binVal, 2);
}else {
return parseInt(binVal.substring(1, length).replace('-',0).split('').map(bit=>bit=='0'?'1':'0').join(''), 2)+1;
}
}
function transfer(str) {
var array = str.split(" ");
var array2 = "";
for(var i = 0; i < array.length; i++) {
array2 += "'" + array[i] + "',";
}
return array2;
}
var bytes = ['04','04','24','4B','65','00','0F','00','FD','02','E0','FD','71','05','33','05','2E','05','28','05','25','05','1E','05','15','05','25','05','3C','05','52','05','6D','05','92','05','A4','05','B8','7C','4E'];
var result = Decode(1, bytes);
console.log(result);
console