地磁

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript"> 
        
var prop_MagneticState_BatteryLevel_post = 0x01; //车位状态 电池电量 属性
var event_AbnormalAlarm_post = 0x02; //告警 离线事件
var event_Error_post = 0x03; //故障 事件

var ALINK_PROP_POST_METHOD = 'thing.event.property.post'; 
var ALINK_EVENT_POST_AbnormalAlarm_METHOD = "thing.event.AbnormalAlarm.post"; 
var ALINK_EVENT_POST_Error_METHOD = "thing.event.Error.post"; 

function rawDataToProtocol(bytes) {
    var derective;
    var uint8Array = new Uint8Array(bytes.length);
    for (var i = 0; i < bytes.length; i++) {
        uint8Array[i] = bytes[i] & 0xff;
    }
    var dataView = new DataView(uint8Array.buffer, 0);
    var jsonMap = new Object();
    
    var sn1=''+(dataView.getInt8(4)& 0xff).toString(16);
    if(sn1.length==1){
        sn1='0'+sn1;
    }
    var sn2=''+(dataView.getInt8(5)& 0xff).toString(16);
    if(sn2.length==1){
        sn2='0'+sn2;
    }
    var sn3=''+(dataView.getInt8(6)& 0xff).toString(16);
    if(sn3.length==1){
        sn3='0'+sn3;
    }
    var sn4=''+(dataView.getInt8(7)& 0xff).toString(16);
    if(sn4.length==1){
        sn4='0'+sn4;
    }
    var sn5=''+(dataView.getInt8(8)& 0xff).toString(16);
    if(sn5.length==1){
        sn5='0'+sn5;
    }
    var sn6=''+(dataView.getInt8(9)& 0xff).toString(16);
    if(sn6.length==1){
        sn6='0'+sn6;
    }
    var sn7=''+(dataView.getInt8(10)& 0xff).toString(16);
    if(sn7.length==1){
        sn7='0'+sn7;
    }
    var sn8=''+(dataView.getInt8(11)& 0xff).toString(16);
    if(sn8.length==1){
        sn8='0'+sn8;
    }
    var sn9=''+(dataView.getInt8(12)& 0xff).toString(16);
    if(sn9.length==1){
        sn9='0'+sn9;
    }
    var sn10=''+(dataView.getInt8(13)& 0xff).toString(16);
    if(sn10.length==1){
        sn10='0'+sn10;
    }
    var sn11=''+(dataView.getInt8(14)& 0xff).toString(16);
    if(sn11.length==1){
        sn11='0'+sn11;
    }
    var sn12=''+(dataView.getInt8(15)& 0xff).toString(16);
    if(sn12.length==1){
        sn12='0'+sn12;
    }
    derective = uint8Array[3];
    //jsonMap['iotId'] = sn1+sn2+sn3+sn4+sn5+sn6+sn7+sn8+sn9+sn10+sn11+sn12; //设备sn
    if (derective == prop_MagneticState_BatteryLevel_post ) {
        jsonMap['method'] = ALINK_PROP_POST_METHOD;
        jsonMap['version'] = '1.0'; 
        var id1 =dataView.getInt8(16); 
        var id2 =dataView.getInt8(17); 
        var id3 =dataView.getInt8(18); 
        var id4 =dataView.getInt8(19); 
        jsonMap['id'] = '' + id1 + id2 + id3 + id4;
        var params = {};
        if(uint8Array[20]==0X00){
        params['MagneticState'] = 0; 
       }else{
        params['MagneticState'] = 1;   
       }
       params['BatteryLevel'] =dataView.getInt8(21);    
       jsonMap['params'] = params; 
    }else if(derective ==event_AbnormalAlarm_post){
        jsonMap['method'] = ALINK_EVENT_POST_AbnormalAlarm_METHOD;
        jsonMap['version'] = '1.0'; 
        var params = {};
        params['AlarmType'] =dataView.getInt8(16); 
        jsonMap['params'] = params; 
    }
    else if(derective ==event_Error_post){
        jsonMap['method'] = ALINK_EVENT_POST_Error_METHOD;
        jsonMap['version'] = '1.0'; 
        var params = {};
        params['ErrorCode'] =dataView.getInt8(16); 
        jsonMap['params'] = params; 
    }
    return jsonMap;
}

function protocolToRawData(json) {
    var payloadArray = [0x5D,0x0A,0x00,0xA5,0xAA,0x01,0x00];
    return payloadArray;
}

//以下是部分辅助函数
function buffer_uint8(value) {
    var uint8Array = new Uint8Array(1);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setUint8(0, value);
    return [].slice.call(uint8Array);
}
function buffer_int16(value) {
    var uint8Array = new Uint8Array(2);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setInt16(0, value);
    return [].slice.call(uint8Array);
}
function buffer_int32(value) {
    var uint8Array = new Uint8Array(4);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setInt32(0, value);
    return [].slice.call(uint8Array);
}

function buffer_float32(value) {
    var uint8Array = new Uint8Array(4);
    var dv = new DataView(uint8Array.buffer, 0);
    dv.setFloat32(0, value);
    return [].slice.call(uint8Array);
}



//16进制串转字节数组
function HexString2Bytes(str) {
  var pos = 0;
  var len = str.length;
  if (len % 2 != 0) {
    return null;
  }
  len /= 2;
  var arrBytes = new Array();
  for (var i = 0; i < len; i++) {
    var s = str.substr(pos, 2);
    var v = parseInt(s, 16);
    arrBytes.push(v);
    pos += 2;
  }
  return arrBytes;
}
function Bytes2Str(arr)
{
    var str = "";
    for(var i=0; i<arr.length; i++)
    {
       var tmp = arr[i].toString(16);
       if(tmp.length == 1)
       {
           tmp = "0" + tmp;
       }
       str += tmp;
    }
    return str;
}

    window.onload=function(){
        var ss1=HexString2Bytes('A5AA1301303132333435363738393031000000010064');
        var sss1 = rawDataToProtocol(ss1)
        console.log(sss1);
        var ss2=HexString2Bytes('A5AA0E0230313233343536373839303100');
        var sss2 = rawDataToProtocol(ss2)
        console.log(sss2);
        var ss3=HexString2Bytes('A5AA0E0330313233343536373839303100');
        var sss3 = rawDataToProtocol(ss3)
        console.log(sss3);

        var json={
            "method":"thing.event.property.post",
            // 'derective':0X03,
            // 'sn':'4057941a2d820000',
            // 'serialNumber':'8a567e4d',
            // 'check':'0X567e',
            // "id":"12345",
            // "version":"1.0",
            // "code":200,
            // "data":{}
        };
         var bytes = protocolToRawData(json)
         var str2 = Bytes2Str(bytes);
          console.log(bytes);
          console.log(str2);
    }
        </script>
    </head>
    <body></body>
</html>

 

转载于:https://www.cnblogs.com/zclaude/p/10441989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值