var HexBase = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']; var EProCmdV = { WRITE_UID_ : 0x01, WRITE_PWD_ : 0x02, READ_UID_ : 0x03, READ_PWD_ : 0x04, VERIFY_UID_ : 0x05, VERIFY_PWD_ : 0x06, READ_STATE_ : 0x07, SET_DELAY_ : 0x08, SET_DELAY_ALL_ : 0x09, WRITE_ADDR_ : 0x0A, CHARGE_ : 0x0B, DISCHARGE_ : 0x0C, AMEND_ : 0x0D, READ_FIRWARE_ : 0x0E, READ_ADDR_ : 0x0F, BOOM_ : 0x10, INSPECT_SLAVE_ : 0x11, BASE_CHECK_ : 0x12, SLAVE_ONLINE_ : 0x13, ALL_SLEEP : 0x14, READ_DELAY_ : 0x16, BC_WRITE_ADDR_ : 0x17, READ_AMEND_V_ : 0x18, READ_S_BUS_C_ : 0x19, READ_S_BUS_V_ : 0x1A, SLAVE_BUS_CMD : 0x1B, EQUEL_UID_FEA : 0x1C, SET_PSWD_FLAG : 0x1D, SET_SUPER_T_ : 0x1E, MASTER_HARTBEAT_ : 0x20, SET_BUS_MODE_ : 0x21, BROADCAST_ADDR : 0xFF, BUS_MODE_R_ : 0xFFFE, BUS_MODE_B_ : 0xFFFD, WAIT_ONLINE_ : 0xFFFC, WAIT_RELEASE_ : 0xFFFB, TRANS_DELAY_ : 0xFFFA, S_A_ERROR_S : 0 , //从机应答错误状态 S_RA_WRITE_ID : 1 , //主机写入UUID param :15字节 S_RA_WRITE_PSW : 2 , //主机写入密码 param :8字节 S_RA_EQUAL_ID : 3 , //主机验证UUID param :13字节 S_RA_EQUAL_PSW : 4 , //主机验证密码 param :8字节 S_RA_SET_DELAY : 5 , //主机设置单发雷管的延时 param :2字节 S_RA_SET_ADDR : 7 , //设置从机的通讯地址 param :2字节 或 15+2(广播通过UID设置地址) S_RA_OPER_CMD : 8 , //主机发送操作命令 param :1字节 S_RA_REQUEST_ACK : 9 , //主机发送的应答请求 param :0字节 S_RA_SET_BAUDRATE : 10 ,//设置通讯速率 param :2字节 S_R_SET_LOCAL : 11 ,//设置使用位置 param :8字节 S_R_SET_USETIME : 12 , //设置使用时间 param :2字节 S_R_HEARTBEAT : 13 ,//心跳包 param :0字节 S_R_FACTORY_SET : 14 ,//释放工厂模式 param :4字节 S_UID_REQUEST : 15 ,//利用UID进行访问,只能用广播访问 param : {UID+(10bit地址+6bit功能码)+功能码参数} S_UID_SEARCH : 16 ,//UID搜索功功能码 S_RA_EQUAL_UID_F : 17 ,//UID特征码验证 S_RA_SETSUPER_T : 18 ,//设置复位保存延时起爆时间 RA_REGISTER : 62 ,//读寄存器 WA_REGISTER : 63 ,//写4字节寄存器 S_CMD_READ_ID : 1 , //主机读取UUID S_CMD_READ_PSW : 2 , //主机读取PSWD S_CMD_READ_SYS_S : 3 , //主机读取系统状态 S_CMD_READ_VERSION : 4 , //主机读取系统版本 S_CMD_READ_LOCAL : 5 , //读取位置信息 S_CMD_READ_OPERTIME : 6 , //读取操作时间 S_CMD_READ_ADDR : 7 , //读取通讯地址 S_CMD_READ_DELAY : 8 , //主机读取延时设置 S_CMD_READ_SYS_F : 9 , //读取备份区的状态信息 S_CMD_CHARGE : 10 , //充电 S_CMD_DISCHARGE : 11 , //放电 S_CMD_CLK_CHECK : 12 , //时钟校准 S_CMD_BLAST : 13 , //起爆 S_CMD_SLEEP : 14 , //强制休眠,不在监听总线 S_CMD_INSPECT : 15 , //巡检 S_CMD_SYS_CHECK : 16 , //执行自检 //public final static byte CMD_SEARCH_UID : 17 //搜索UID S_CMD_STOP_CHARGE : 18 , //停止充电 S_CMD_FAC_CHECK1 : 19 , //工厂自检 S_CMD_FAC_CHECK2 : 20 , //工厂自检 S_CND_READ_AMEND : 21 , //读校准值 S_CMD_FAC_CHECK3 : 22 , //工厂自检 S_CMD_READ_BUSV : 23 , //读总线电压 S_CMD_EQUEL_PWD : 24 , //密码验证置位 }; //十六进制字符串转字节数组 function HexStr2Bytes(str) { var pos = 0; var len = str.length; if(len %2 != 0) { return null; } len /= 2; var hexA = new Array(); for(var i=0; i> 4) & 0x0F]; str += HexBase[(arr[i]) & 0x0F]; if(i != arr.length ) str+= " "; } return str; } function Bytes2ChartArray(arr) { var str = []; var index = 0; for(var i=0; i> 4) & 0x0F]; str[index++]= HexBase[(arr[i]) & 0x0F]; } return str; } function Byte2Hex(data) { var str = ""; str += HexBase[(data >> 4) & 0x0F]; str += HexBase[(data) & 0x0F]; return str; } function Bytes2ULong(arr) { var data_l = 0; for(i = 0; i < arr.length; i++) { data_l += (arr[i] & 0xFF) << (8*i); } return data_l; } function Bytes2UShort(arr){ var data_s = Bytes2ULong(arr); if((data_s & 0x8000) > 0) { data_s = (65536 - data_s)*-1; } return data_s; } function IntFormat(charcount,val) { var buf_ = new Array(); for(var count_ = 0 ; count_ < charcount; count_++) { buf_.push(val % 10); val = parseInt(val / 10); } var str_ = ""; while(charcount > 0) { charcount--; str_ += buf_[charcount]; } return str_; } function ArrayCopy(src,dst,offset,len) { var len_ if(typeof(len) == "undefined" || len == null || len < 1) { if(src.length > offset) len_ = src.length - offset; else return; }else{ len_ = len; } if(offset < 0) { offset = 0; } var index = 0; while(index < len_) dst[index++] = src[offset++]; return dst; } function ArrayAppend(src,dst,offset,len) { var len_ if(typeof(len) == "undefined" || len == null || len < 1) { len_ = src.length; }else{ len_ = len; } if(offset < 0) { offset = 0; } var index = 0; while(index < len_) dst[offset++] = src[index++]; return dst; } function Int2HexStr(intdata,spec,format) { var data = []; var count = 0; var hexdata = ''; var index = 0; var index2 = 0; var temp = ''; if((format == 0) && (intdata == 0)) { return '0'; } while(intdata > 0) { data[count++] = HexBase[intdata & 0x0F]; intdata >>= 4; } if((count %2) != 0) { data[count++] = '0'; } index = 0; while((count > 0) && ((count-1-index) >index)) { temp = data[index]; data[index] = data[count-1-index]; data[count-1-index] = temp; index++; } if(format > count){ index = 0; if((format %2) > 0) format++; while(format > count) { if((index % 2) == 0) { hexdata += spec; } hexdata += '0'; format--; index++; } } index = 0; while(index < count) { if((index % 2) == 0) { hexdata += spec; } hexdata += data[index++]; } return hexdata; } function Crc8(buf) { var crc = 0; var index = 0; while(index < buf.length) { crc ^= buf[index++]; crc &= 0xFF; } return crc; } function PrapareUIDFeatrue(uidarray) { var index1 = 0; var us_temp = 0; var uidfeatrue = []; var uid_f = uidarray[9]; //拷贝特征值 uidfeatrue[0] = 0;// uidarray[9]; //合并年月 uidfeatrue[1] = uidarray[3] - 0x30; uidfeatrue[1] <<= 4; if(uidarray[5] > 48) { uidfeatrue[1] += 0x0A; } uidfeatrue[1] += (uidarray[6] - 0x30 ); //特征码于日期调整 uidarray[9] = uidarray[8]; uidarray[8] = uidarray[7]; //将日期和流水号转为3字节int us_temp = 0; for(var index1 = 8; index1 < 15; index1++) { us_temp *= 10; us_temp += (uidarray[index1] - 0x30 ); } for(var index1 = 0; index1 < 3; index1++) { uidfeatrue[2+index1] = us_temp & 0xFF; us_temp >>= 8; } for(var index = 0; index < 4;index++) { uidfeatrue[index] = uidfeatrue[index+1]; } uidfeatrue[4] = uid_f; return uidfeatrue; // Mem_Copy(searchfeatrue,uidfeatrue,6); // index1 = searchfeatrue[4]; // searchfeatrue[4] = searchfeatrue[2]; // searchfeatrue[2] = index1; } function PrapareUIDFeatrue2(uidarray) { var index1 = 0; var us_temp = 0; var uidfeatrue = []; //拷贝特征值 uidfeatrue[0] = uidarray[9]; //合并年月 uidfeatrue[1] = uidarray[3] - 0x30; uidfeatrue[1] <<= 4; if(uidarray[5] > 48) { uidfeatrue[1] += 0x0A; } uidfeatrue[1] += (uidarray[6] - 0x30 ); //特征码于日期调整 uidarray[9] = uidarray[8]; uidarray[8] = uidarray[7]; //将日期和流水号转为3字节int us_temp = 0; for(var index1 = 8; index1 < 15; index1++) { us_temp *= 10; us_temp += (uidarray[index1] - 0x30 ); } for(var index = 0; index < 3;index++) { uidfeatrue[2+index] = us_temp & 0xFF; us_temp >>= 8; } return uidfeatrue; // Mem_Copy(searchfeatrue,uidfeatrue,6); // index1 = searchfeatrue[4]; // searchfeatrue[4] = searchfeatrue[2]; // searchfeatrue[2] = index1; } function Epro_CmdData(addr,func,cmd,param,read_len) { var bufdata = []; var index = 0; addr <<= 6; addr |= (func & 0x3F); bufdata[index++] = addr & 0xFF; bufdata[index++] = (addr>>8) & 0xFF; if(func == 0x08 || func == 0x0A) { bufdata[index++] = cmd; } if(typeof(param) != "undefined" && param != null) { for(i = 0; i < param.length;i++) { bufdata[index++] = param[i]; } } var crc = Crc8(bufdata); bufdata[index++] = crc; var bufdata2 = []; bufdata2[0] = index; bufdata2[1] = read_len; for(var i = 0; i < index ; i++) { bufdata2[i+2] = bufdata[i]; } return bufdata2; }