您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

JLObuWecha33UnPackt.js 6.4KB

1
  1. var dataTool=require('./dataTool');var config=require('./JLConfig');var onfire=require('./onfire');export function receivedeviceinfo(callBack){onfire.on(config.DeviceInfo(),(res)=>{onfire.clear();var data=unpack33Protocol(res,1);var result=config.DevResult(2,data);result.data=analysisDeviceInfo(result.data);callBack.call(this,result)})}export function receiveReset(callBack){onfire.on(config.ResetFlag(),(res)=>{onfire.clear();var data=unpack33Protocol(res,1);var result=config.DevResult(1,data);callBack.call(this,result)})}export function receiveChannel(callBack){onfire.on(config.ChannelFlag(),(res)=>{onfire.clear();var data=unpack33Protocol(res,0);var result=config.DevResult(0,data);callBack.call(this,result)})}export function receiveObuAuth(callBack){onfire.on(config.Auth(),(res)=>{onfire.clear();var data=unpack33Protocol(res,1);var result=config.DevResult(3,data);callBack.call(this,result)})}function unpack33Protocol(data,type){var result_str='';for(var i=0;i<data.length;i++){var sub_data=data[i];var data_33=unpackWechatProtocol(sub_data);var resultData={'code':'','msg':'','data':''};var tempBean_33={'ST':'','SN':'','CTL':'','LEN':'','DATA':'','BCC':''};tempBean_33.ST=data_33.substring(0*2,1*2);tempBean_33.SN=data_33.substring(1*2,2*2);tempBean_33.CTL=data_33.substring(2*2,3*2);tempBean_33.LEN=data_33.substring(3*2,4*2);tempBean_33.DATA=data_33.substring(4*2,data_33.length-2);tempBean_33.BCC=data_33.substring(data_33.length-2);var bcc=dataTool.tenToHex(dataTool.bccCheck(tempBean_33.SN+tempBean_33.CTL+tempBean_33.LEN+tempBean_33.DATA),2);if(tempBean_33.BCC===bcc){resultData=unCmd(i,tempBean_33.DATA,type);result_str=result_str+resultData.data}else{resultData.code=config.errorCode();resultData.msg="BCC校验失败";resultData.data=''}}resultData.data=result_str;return resultData}function unCmd(count,data_cmd,type){var resultData={'code':0,'msg':'','data':''};if(count==0){var statu=data_cmd.substring(1*2,2*2);if(statu==='00'){resultData.code=config.successCode();resultData.msg="执行成功";if(type==0){var sub_data=data_cmd.substr(10,data_cmd.length);resultData.data=unApduData(sub_data)[0]}else{resultData.data=data_cmd}}else if(statu==='CF'){resultData.code=config.cardNoExists();resultData.msg="执行失败,请插入卡片或者先认证设备";resultData.data=''}else{resultData.code=config.errorCode();resultData.msg="执行失败,状态是"+statu;resultData.data=''}return resultData}else{resultData.code=0;resultData.data=data_cmd;resultData.msg="执行成功";return resultData}}function unApduData(data){var flag=data.substring(0*2,1*2);var apdus=[];var len=0;if(flag==='81'){len=dataTool.hexToTen(data.substring(1*2,2*2));var temp=data.substring(2*2);var i=0;do{var len1=dataTool.hexToTen(temp.substring(1*2,2*2))+2;apdus.push(temp.substring(2*2,len1*2));i=i+len1;if(i<len){temp=temp.substring(len1*2)}}while(i<len)}else if(flag==='82'){len=dataTool.hexToTen(apduStr.substring(1*2,3*6));var temp=data.substring(3*6);var i=0;do{var len1=dataTool.hexToTen(temp.substring(1*2,2*2))+2;apdus.push(temp.substring(2*2,len1*2));i=i+len1;if(i<len){temp=temp.substring(len1*2)}}while(i<len)}else{len=dataTool.hexToTen(flag);var temp=data.substring(1*2);var i=0;do{var len1=dataTool.hexToTen(temp.substring(1*2,2*2))+2;apdus.push(temp.substring(2*2,len1*2));i=i+len1;if(i<len){temp=temp.substring(len1*2)}}while(i<len)}return apdus}function unpackWechatProtocol(data){var tempBean_wx={'wxMagicNumber':'','wxVer':'','wxLen':'','wxCMD':'','wxSeq':'','wxData':'','wxExtra':'','wxTail':'','wxTotalData':''};tempBean_wx.wxMagicNumber=data.substring(0*2,1*2);tempBean_wx.wxVer=data.substring(1*2,2*2);tempBean_wx.wxLen=data.substring(2*2,4*2);tempBean_wx.wxCMD=data.substring(4*2,6*2);tempBean_wx.wxSeq=data.substring(6*2,8*2);tempBean_wx.wxExtra=data.substring(8*2,11*2);var len=dataTool.hexToTen(data.substring(11*2,12*2));if((len&0X80)==128){var len1=len&0x7F;var len2=dataTool.hexToTen(data.substring(12*2,13*2))&0x7F;var len3=(len2<<7)+len1;tempBean_wx.wxData=data.substring(13*2,len3*2+26)}else{tempBean_wx.wxData=data.substring(12*2,len*2+24)}return tempBean_wx.wxData}function getwcDATAlen(dataLen){var len='';var lens1=0;var lens2=0;if(dataLen>127){lens1=(dataLen&0x7F)|0x80;lens2=(dataLen>>7)&0X7f;len=dataTool.tenToHex(lens1,2)+dataTool.tenToHex(lens2,2)}else{len=dataTool.tenToHex(dataLen,2)}return len}export function analysisDeviceInfo(cmd){var version_len=dataTool.hexToTen(cmd.substr(0,2));var version=dataTool.hexToString(cmd.substr(2,version_len*2));var obuSN_len=dataTool.hexToTen(cmd.substr(version_len*2+2,2));var obuSN=dataTool.hexToString(cmd.substr(version_len*2+4,obuSN_len*2));var mac_len=dataTool.hexToTen(cmd.substr(version_len*2+4+obuSN_len*2,2));var mac=cmd.substr(version_len*2+6+obuSN_len*2,mac_len*2);var actState=cmd.substr(cmd.length-2,2);return{version:version,obuSN:obuSN,mac:mac,actState:actState}}export function analysisCardFile(res){var data=res.data;var offset=0;var provider=data.substring(offset,offset+16);offset+=16;var cardType=data.substring(offset,offset+2);offset+=2;var cardVersion=data.substring(offset,offset+2);offset+=2;var cardId=data.substring(offset,offset+20);offset+=20;var signedDate=data.substring(offset,offset+8);offset+=8;var expiredDate=data.substring(offset,offset+8);offset+=8;var vehicleNumber=data.substring(offset,offset+24);offset+=24;var userType=data.substring(offset,offset+2);offset+=2;var plateColor=data.substring(offset,offset+2);offset+=2;var vehicleModel=data.substring(offset,offset+2);offset+=2;var cardInfo={"provider":provider,"cardType":cardType,"cardVersion":cardVersion,"cardId":cardId,"signedDate":signedDate,"expiredDate":expiredDate,"vehicleNumber":vehicleNumber,"userType":userType,"plateColor":plateColor,"vehicleModel":vehicleModel,};res={"code":res.code,"cardInfo":cardInfo,"err_msg":res.err_msg,"msg":res.msg};return res}export function analysisSystemFile(res){var offset=0;var data=res.data;var provider=data.substring(offset,offset+16);offset+=16;var type=data.substring(offset,offset+2);offset+=2;var version=data.substring(offset,offset+2);offset+=2;var serialNumber=data.substring(offset,offset+16);offset+=16;var signedDate=data.substring(offset,offset+8);offset+=8;var expiredDate=data.substring(offset,offset+8);offset+=8;var tamperStatus=data.substring(offset,offset+2);offset+=2;var systemInfo={"provider":provider,"type":type,"version":version,"serialNumber":serialNumber,"signedDate":signedDate,"expiredDate":expiredDate,"tamperStatus":tamperStatus};res={"code":res.code,"systemInfo":systemInfo,"err_msg":res.err_msg,"msg":res.msg};return res}