You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

JLObuWechat33Pack.js 4.8KB

1 年之前
1
  1. var dataTool=require("./dataTool");var cmdKey=require("./JLZJConfig.js");var wxSeq=0;var frame=0;var MAX_PACK_LEN=95;var ST="33";export function wechatInit1(mac){var cmd_arr=packWechatInit1(mac);return cmd_arr};export function wechatInit2(){var cmd_arr=packWechatInit2();return cmd_arr};export function ICCResetReq(){var cmd=cmdKey.ICCResetCmd();var cmd_arr=packData(cmd);return cmd_arr};export function ESAMResetReq(){var cmd=cmdKey.ESAMResetCmd();var cmd_arr=packData(cmd);return cmd_arr};export function ICCChannelTransmission(type,dataArr){var cmdApdu=cread_apdu(dataArr);var cmdApduLen=cmdApdu.length/2;var cmd=cmdKey.ICCChannelCmd()+type+dataTool.tenToHex(cmdApduLen,4,true)+cmdApdu;var cmd_arr=packData(cmd);return cmd_arr};export function ESAMChannelTransmission(type,dataArr){var cmdApdu=cread_apdu(dataArr);var cmdApduLen=cmdApdu.length/2;var cmd=cmdKey.ESAMChannelCmd()+type+dataTool.tenToHex(cmdApduLen,4,true)+cmdApdu;var cmd_arr=packData(cmd);return cmd_arr};function packData(cmd){var cmd_arr=pack33Protocol(cmd);var wechat_arr=packWechatCmd(cmd_arr);var cmdArray=[];for(var i=0;i<wechat_arr.length;i++){var wechat_cmd=wechat_arr[i].wxTotalData;if(wechat_cmd.length<40){cmdArray.push(wechat_cmd)}else{for(var j=0;j<wechat_cmd.length;j+=40){var wechat_sub_cmd=wechat_cmd.substr(j,40);cmdArray.push(wechat_sub_cmd)}}}return cmdArray}function pack33Protocol(cmd){add_Frame();var cmdlen=cmd.length/2;var cmd33conten=[];if(cmdlen>MAX_PACK_LEN){var packages=Math.round(cmdlen/MAX_PACK_LEN);for(var i=0;i<packages;i++){var tempBean={ST:"",SN:"",CTL:"",LEN:"",DATA:"",BCC:"",TOTALDATA:""};tempBean.ST=ST;tempBean.SN=dataTool.tenToHex(frame,2);if(i==0){tempBean.CTL=get_ctl(1,packages-(i+1))}else{tempBean.CTL=get_ctl(0,packages-(i+1))}if(i+1==packages){tempBean.DATA=cmd.substring(i*MAX_PACK_LEN*2)}else{tempBean.DATA=cmd.substring(i*MAX_PACK_LEN*2,i*MAX_PACK_LEN*2+MAX_PACK_LEN*2)}tempBean.LEN=dataTool.tenToHex(tempBean.DATA.length/2,2);tempBean.BCC=dataTool.bccCheck(tempBean.SN+tempBean.CTL+tempBean.LEN+tempBean.DATA);console.log("tempBean.BCC====================:"+tempBean.BCC);tempBean.TOTALDATA=tempBean.ST+tempBean.SN+tempBean.CTL+tempBean.LEN+tempBean.DATA+tempBean.BCC;cmd33conten.push(tempBean)}}else{var tempBean={ST:"",SN:"",CTL:"",LEN:"",DATA:"",BCC:"",TOTALDATA:""};tempBean.ST=ST;tempBean.SN=dataTool.tenToHex(frame,2);tempBean.CTL=get_ctl(1,0);tempBean.LEN=dataTool.tenToHex(cmdlen,2);tempBean.DATA=cmd;tempBean.BCC=dataTool.bccCheck(tempBean.SN+tempBean.CTL+tempBean.LEN+tempBean.DATA);tempBean.TOTALDATA=tempBean.ST+tempBean.SN+tempBean.CTL+tempBean.LEN+tempBean.DATA+tempBean.BCC;cmd33conten.push(tempBean)}return cmd33conten}export function cread_apdu(cmdArr){var content=cread_TLV(cmdArr);var contentuLen=content.length/2;var contentApdu="";var contentApduLen="";if(contentuLen<=80){contentApduLen=dataTool.tenToHex(contentuLen,2)}else{if(contentuLen<=255){contentApduLen="81"+dataTool.tenToHex(contentuLen,2)}else{contentApduLen="82"+dataTool.tenToHex(contentuLen,4)}}contentApdu="80"+contentApduLen+content;return contentApdu};function cread_TLV(cmdArr){var strTLV="";for(var i=1;i<=cmdArr.length;i++){var cmd=cmdArr[i-1];var len=cmd.length/2;strTLV=strTLV+dataTool.tenToHex(i,2)+dataTool.tenToHex(len,2)+cmd}return strTLV}function add_Frame(){frame++;if(frame>15){frame=0}}function get_ctl(bit7,serial){var ctl="";if(bit7==0){ctl=dataTool.tenToHex(serial,2)}else{var n=(2<<6)+serial;ctl=dataTool.tenToHex(n,2)}return ctl}export function packWechatInit1(mac){var cmd="fe01000e4e21"+mac+"0a0208001200";var cmd_arr=[];for(var i=0;i<cmd.length;i+=40){var cmd_sub=cmd.substr(i,40);cmd_arr.push(cmd_sub)}return cmd_arr};export function packWechatInit2(){var cmd="fe0100134e23"+"0002"+"0a02080010b42418f8ac01";var cmd_arr=[];for(var i=0;i<cmd.length;i+=40){var cmd_sub=cmd.substr(i,40);cmd_arr.push(cmd_sub)}return cmd_arr};function packWechatCmd(cmdArray){var cmdwxconten=[];var temp33conten=cmdArray;if(temp33conten.length>0){for(var i=0;i<temp33conten.length;i++){var tempBean_33=temp33conten[i].TOTALDATA;var tempBean_wx={wxMagicNumber:"",wxVer:"",wxLen:"",wxCMD:"",wxSeq:"",wxData:"",wxExtra:"",wxTail:"",wxTotalData:""};tempBean_wx.wxMagicNumber="FE";tempBean_wx.wxVer="01";tempBean_wx.wxLen=dataTool.tenToHex(tempBean_33.length/2+14,4);tempBean_wx.wxCMD="7531";tempBean_wx.wxSeq="0000";tempBean_wx.wxExtra="0A0012"+getwcDATAlen(tempBean_33.length/2);tempBean_wx.wxData=tempBean_33;tempBean_wx.wxTail="1800";tempBean_wx.wxTotalData=tempBean_wx.wxMagicNumber+tempBean_wx.wxVer+tempBean_wx.wxLen+tempBean_wx.wxCMD+tempBean_wx.wxSeq+tempBean_wx.wxExtra+tempBean_wx.wxData+tempBean_wx.wxTail;cmdwxconten.push(tempBean_wx)}}return cmdwxconten}function getwcDATAlen(dataLen){var len="";var lens1=0;var lens2=0;if(dataLen>127){lens1=dataLen&127|128;lens2=dataLen>>7&127;len=dataTool.tenToHex(lens1,2)+dataTool.tenToHex(lens2,2)}else{len=dataTool.tenToHex(dataLen,2)}return len}