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] + " ";
hexBytes[i] = intToHex(parseInt(bytes[i]), 2);
console.log( hexBytes[i]);
}
if (bytes.length = 41) {
jsonobj = {
"Flag": 1,
"SensorType": 43,
"SensorNumberThird": 0,
"X": parseX(hexBytes),
"Y": parseY(hexBytes),
"Temperature": parseTemperature(hexBytes),
"Timestamp": current_time,
"rawData": "rawData"
};
} 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);
return tempBinVal;
}
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 {
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;
}
}
function transfer(str) {
var array = str.split(" ");
var array2 = "";
for(var i = 0; i < array.length; i++) {
array2 += "'" + array[i] + "',";
}
return array2;
}
function transfer2(str) {
var array = str.split(" ");
var data = "";
for(var i = 0; i < array.length; i++) {
var str = intToHex(parseInt(array[i]), 2);
data += "'" + str + "',";
}
return data;
}
var test1 = "4 4 36 75 101 0 15 0 243 0 2 255 72 0 7 0 3 0 3 0 4 0 6 0 4 0 4 0 4 0 5 0 4 0 3 0 4 0 4 215 229";
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 bytes2 = ['4','4','36','75','101','0','15','0','243','0','2','255','72','0','7','0','3','0','3','0','4','0','6','0','4','0','4','0','4','0','5','0','4','0','3','0','4','0','4','215','229'];
var result = Decode(1, bytes2);
console.log(result);
console