编辑代码

var PROPERTY_SET_METHOD = "thing.property.post";
var INVOKE_SERVICE_METHOD = "invokeService";
var PROPERTY_SET_METHOD = "thing.property.set";

 
function rawDataToJson (bytes) {
    var jsonMap = {};
    var params = {};
    var data = {};
    var strValue = '';
    // 将bytes转为16进制字符串
    for (var i = 0; i < bytes.length; i++) {
        var num = bytes[i];
        var tem;
        if (num < 0) {           
            tmp =(255+num+1).toString(16);
        } else {
           tmp = num.toString(16);
        }
        if (tmp.length == 1) {
            tmp = "0" + tmp;
        }
        strValue += tmp;
    }
    data['value'] = strValue.toUpperCase();
    
    params['cmdData'] = data;
    
    jsonMap['id'] = '111'
    jsonMap['version'] = '1.0'
    jsonMap['params'] = params; 
    jsonMap['method'] = PROPERTY_SET_METHOD
    return jsonMap
}


/**
  * 示例数据
  * 1. 下发属性设置指令: 
  * 传入参数:
  * {"method":"thing.property.set", "version": "1.0", "id": 2, "params":{ "power": 8 }}
  * 输出结果:
  * 0x05020008  命令类型[1字节]+消息id[1字节]+数据值[2字节]
  *
  * 2. 设备上报响应返回
  * 传入参数:
  * {"method":"thing.post.reply", "id":"1", "code":200}
  * 输出结果:
  * 0x000101 命令类型[1字节]+消息id[1字节]+执行结果[1字节]
*/
function jsonToRawData (json) {
    var method = json['method']
    var id = json['id']
    var payloadArray = []
    var params = json['params'];
    var cmdData = params['cmdData'];
    // for (var i in params){
    //     if (params[i].key == 'cmdData') {
    //         cmdData = params[i];
    //     }
    //     ts = params[i].ts;
    // }
    payloadArray = system_string(cmdData.toUpperCase());
    
    return payloadArray;
}

function system_string(value) {
        var uint8Array = new Uint8Array(value.length/2);
    var dv = new DataView(uint8Array.buffer, 0);
                var j=0;
    for (var i = 0; i<value.length;  i+=2) {
        dv.setUint8(j++, hex2Value(value[i])*16+hex2Value(value[i+1]));
    }
        return [].slice.call(uint8Array);
}

function hex2Value(v){
    var res;
    switch(v){
    case "A": res = 10;break;
    case "B": res = 11;break;
    case "C": res = 12;break;
    case "D": res = 13;break;
    case "E": res = 14;break;
    case "F": res = 15;break;
    case "0": res = 0;break;
    case "1": res = 1;break;
    case "2": res = 2;break;
    case "3": res = 3;break;
    case "4": res = 4;break;
    case "5": res = 5;break;
    case "6": res = 6;break;
    case "7": res = 7;break;
    case "8": res = 8;break;
    case "9": res = 9;break;
    default: res = 0;break;
    }
    return res;
}