|
|
@@ -242,116 +242,116 @@ |
|
|
|
// } |
|
|
|
// }) |
|
|
|
// } else { |
|
|
|
let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, "00B095002B"]; |
|
|
|
console.log(cmdArr); |
|
|
|
console.log(bluetoothUtil); |
|
|
|
bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU |
|
|
|
console.log("res====", res) |
|
|
|
var cardStr = res[2]; |
|
|
|
if (cardStr == undefined || cardStr == "undefined" || cardStr == "") { |
|
|
|
tools.alertF("卡指令不符" + cardStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (cardStr.length < 40) { |
|
|
|
tools.alertF("卡指令长度不符" + cardStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
card.cardNo = cardStr.substring(24, 40) |
|
|
|
getObuId(); |
|
|
|
let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, "00B095002B"]; |
|
|
|
console.log(cmdArr); |
|
|
|
console.log(bluetoothUtil); |
|
|
|
bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU |
|
|
|
console.log("res====", res) |
|
|
|
var cardStr = res[2]; |
|
|
|
if (cardStr == undefined || cardStr == "undefined" || cardStr == "") { |
|
|
|
tools.alertF("卡指令不符" + cardStr); |
|
|
|
return; |
|
|
|
let str = res[2].substring(res[2].length - 4, res[2].length); //判断是否为9000 |
|
|
|
let str3 = res[3].substring(res[3].length - 4, res[3].length); //判断是否为9000 |
|
|
|
if (str == "9000" || str3 == "9000") { |
|
|
|
if (res[2].length > 86 || res[3] >= 12) { |
|
|
|
console.log("res[2]", res[2].substring(84, 86), getVehiclePlateColor(parseInt(res[2] |
|
|
|
.substring(82, 84), 16)), res[2].substring(18, 19)) |
|
|
|
card.cardNo = res[2].substring(20, 40); |
|
|
|
card.startTime = res[2].substring(40, 48); |
|
|
|
card.endTime = res[2].substring(48, 56); |
|
|
|
card.version = res[2].substring(18, 19) >= 4 ? "4x" : "2x"; |
|
|
|
card.money = res[3].substring(0, 8); |
|
|
|
card.v_userType = parseInt(res[2].substring(80, 82), 16); |
|
|
|
console.log("card.v_userType", card.v_userType) |
|
|
|
card.vehiclePlate = HexToStrig(res[2].substring(56, 80)); |
|
|
|
if (res[2].substring(18, 19) >= 4) { |
|
|
|
//4x卡 |
|
|
|
card.type = getVehicleType(parseInt(res[2].substring(84, 86), 16)); |
|
|
|
// card.vehiclePlateColor = parseInt(res[2].substring(82, 84), 16); |
|
|
|
card.color = getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16)) |
|
|
|
} else { |
|
|
|
//2x卡--获取车牌颜色 |
|
|
|
card.type = "--"; |
|
|
|
// card.vehiclePlateColor = parseInt(res[2].substring(82, 84), 16); |
|
|
|
card.color = getVehiclePlateColor(parseInt(res[2].substring(82, 86), 16)) |
|
|
|
} |
|
|
|
state.vehicleId = card.vehiclePlate + "_" + parseInt(res[2].substring(82, 84), 16) |
|
|
|
console.log("card.color===========", card.vehiclePlate, parseInt(res[2].substring(82, |
|
|
|
84), |
|
|
|
16)) |
|
|
|
// 读卡信息 |
|
|
|
getCardList() |
|
|
|
//执行0016文件 |
|
|
|
let arr = [cmd.HOME_DIRECTORY, cmd.PERSONAL_INFORMATION] |
|
|
|
bluetoothUtil.transCmd(arr, '10', function(res) { |
|
|
|
let str2 = res[1].substring(res[1].length - 4, res[1].length); |
|
|
|
if (str2 == "9000") { |
|
|
|
if (res[1].length > 108) { |
|
|
|
card.userName = HexToStrig(res[1].substring(4, 44)); //姓名 |
|
|
|
card.userName = card.userName[0] + '*'.repeat(card.userName |
|
|
|
.length - 1) |
|
|
|
card.idNum = HexToStrig(res[1].substring(44, 108)).replace( |
|
|
|
/^\d{14}/, |
|
|
|
'**************'); //身份证号码 |
|
|
|
|
|
|
|
} |
|
|
|
if (cardStr.length < 40) { |
|
|
|
tools.alertF("卡指令长度不符" + cardStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
card.cardNo = cardStr.substring(24, 40) |
|
|
|
getObuId(); |
|
|
|
return; |
|
|
|
let str = res[2].substring(res[2].length - 4, res[2].length); //判断是否为9000 |
|
|
|
let str3 = res[3].substring(res[3].length - 4, res[3].length); //判断是否为9000 |
|
|
|
if (str == "9000" || str3 == "9000") { |
|
|
|
if (res[2].length > 86 || res[3] >= 12) { |
|
|
|
console.log("res[2]", res[2].substring(84, 86), getVehiclePlateColor(parseInt(res[2] |
|
|
|
.substring(82, 84), 16)), res[2].substring(18, 19)) |
|
|
|
card.cardNo = res[2].substring(20, 40); |
|
|
|
card.startTime = res[2].substring(40, 48); |
|
|
|
card.endTime = res[2].substring(48, 56); |
|
|
|
card.version = res[2].substring(18, 19) >= 4 ? "4x" : "2x"; |
|
|
|
card.money = res[3].substring(0, 8); |
|
|
|
card.v_userType = parseInt(res[2].substring(80, 82), 16); |
|
|
|
console.log("card.v_userType", card.v_userType) |
|
|
|
card.vehiclePlate = HexToStrig(res[2].substring(56, 80)); |
|
|
|
if (res[2].substring(18, 19) >= 4) { |
|
|
|
//4x卡 |
|
|
|
card.type = getVehicleType(parseInt(res[2].substring(84, 86), 16)); |
|
|
|
// card.vehiclePlateColor = parseInt(res[2].substring(82, 84), 16); |
|
|
|
card.color = getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16)) |
|
|
|
} else { |
|
|
|
//2x卡--获取车牌颜色 |
|
|
|
card.type = "--"; |
|
|
|
// card.vehiclePlateColor = parseInt(res[2].substring(82, 84), 16); |
|
|
|
card.color = getVehiclePlateColor(parseInt(res[2].substring(82, 86), 16)) |
|
|
|
} |
|
|
|
state.vehicleId = card.vehiclePlate + "_" + parseInt(res[2].substring(82, 84), 16) |
|
|
|
console.log("card.color===========", card.vehiclePlate, parseInt(res[2].substring(82, |
|
|
|
84), |
|
|
|
16)) |
|
|
|
// 读卡信息 |
|
|
|
getCardList() |
|
|
|
//执行0016文件 |
|
|
|
let arr = [cmd.HOME_DIRECTORY, cmd.PERSONAL_INFORMATION] |
|
|
|
bluetoothUtil.transCmd(arr, '10', function(res) { |
|
|
|
let str2 = res[1].substring(res[1].length - 4, res[1].length); |
|
|
|
if (str2 == "9000") { |
|
|
|
if (res[1].length > 108) { |
|
|
|
card.userName = HexToStrig(res[1].substring(4, 44)); //姓名 |
|
|
|
card.userName = card.userName[0] + '*'.repeat(card.userName |
|
|
|
.length - 1) |
|
|
|
card.idNum = HexToStrig(res[1].substring(44, 108)).replace( |
|
|
|
/^\d{14}/, |
|
|
|
'**************'); //身份证号码 |
|
|
|
|
|
|
|
//获取是否有优惠 |
|
|
|
let cmdArr3 = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd |
|
|
|
.CMD_00B08E0000 |
|
|
|
]; |
|
|
|
bluetoothUtil.transCmd(cmdArr3, '10', function(res) { |
|
|
|
let str3 = res[2].substring(res[2].length - 4, res[2] |
|
|
|
.length); |
|
|
|
if (str3 == "9000") { |
|
|
|
if (res[2].length > 131) { |
|
|
|
let _str = parseInt(res[2].substring(129, 130), |
|
|
|
16); |
|
|
|
switch (_str) { |
|
|
|
case 0: |
|
|
|
card.favourable = "否"; |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
card.favourable = "是"; |
|
|
|
break; |
|
|
|
default: |
|
|
|
card.favourable = '未知' + "_" + _str; |
|
|
|
break; |
|
|
|
} |
|
|
|
//回调读取OBU指令 |
|
|
|
getObuId() |
|
|
|
tools.hideLoadingAlert(); |
|
|
|
|
|
|
|
} else { |
|
|
|
alertF("CMD_00B08E0000指令长度不符" + res[2]); |
|
|
|
//获取是否有优惠 |
|
|
|
let cmdArr3 = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd |
|
|
|
.CMD_00B08E0000 |
|
|
|
]; |
|
|
|
bluetoothUtil.transCmd(cmdArr3, '10', function(res) { |
|
|
|
let str3 = res[2].substring(res[2].length - 4, res[2] |
|
|
|
.length); |
|
|
|
if (str3 == "9000") { |
|
|
|
if (res[2].length > 131) { |
|
|
|
let _str = parseInt(res[2].substring(129, 130), |
|
|
|
16); |
|
|
|
switch (_str) { |
|
|
|
case 0: |
|
|
|
card.favourable = "否"; |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
card.favourable = "是"; |
|
|
|
break; |
|
|
|
default: |
|
|
|
card.favourable = '未知' + "_" + _str; |
|
|
|
break; |
|
|
|
} |
|
|
|
return; |
|
|
|
//回调读取OBU指令 |
|
|
|
getObuId() |
|
|
|
tools.hideLoadingAlert(); |
|
|
|
|
|
|
|
} else { |
|
|
|
alertF("CMD_00B08E0000指令长度不符" + res[2]); |
|
|
|
} |
|
|
|
alertF(cmd.PERSONAL_INFORMATION + "_" + str); |
|
|
|
}) |
|
|
|
} else { |
|
|
|
alertF("PERSONAL_INFORMATION指令长度不符" + res[1]); |
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
alertF(cmd.PERSONAL_INFORMATION + "_" + str); |
|
|
|
}) |
|
|
|
} else { |
|
|
|
alertF("PERSONAL_INFORMATION指令长度不符" + res[1]); |
|
|
|
} |
|
|
|
alertF("PERSONAL_INFORMATION指令长度不符" + res[1]); |
|
|
|
}) |
|
|
|
} else { |
|
|
|
alertF("CMD_READBINARY指令长度不符" + res[2]); |
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
alertF("PERSONAL_INFORMATION指令长度不符" + res[1]); |
|
|
|
}) |
|
|
|
} else { |
|
|
|
alertF("CMD_READBINARY指令长度不符" + res[2]); |
|
|
|
} |
|
|
|
alertF("CMD_READBINARY指令长度不符" + res[2]); |
|
|
|
return; |
|
|
|
} |
|
|
|
alertF("CMD_READBINARY指令长度不符" + res[2]); |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
// } |
|
|
|
|
|
|
|
}; |
|
|
@@ -372,30 +372,29 @@ |
|
|
|
// } |
|
|
|
// }); |
|
|
|
// } else { |
|
|
|
let cmdArr = [cmd.HOME_DIRECTORY, cmd.OBU_SYSTEM_FILE]; |
|
|
|
bluetoothUtil.transCmd(cmdArr, '20', function(res) { |
|
|
|
var obuStr = res[1]; |
|
|
|
if (obuStr == undefined || obuStr == "undefined" || obuStr == "") { |
|
|
|
tools.alertF("OBU指令不符" + obuStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (obuStr.length < 36) { |
|
|
|
tools.alertF("OBU指令长度不符" + obuStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
obu.num = obuStr.substring(20, 36) |
|
|
|
let rand = datas.generateMixed(16); |
|
|
|
let arr = [cmd.OBU_DF01, cmd.OBU_00B400000A + rand + cmd.OBU_4F00]; |
|
|
|
bluetoothUtil.transCmd(arr, '20', function(res) { |
|
|
|
console.log("解密信息kc没问题",res); |
|
|
|
let str2 = res[1].substring(res[1].length - 4, res[1].length); |
|
|
|
if (str2 == "9000") { |
|
|
|
console.log("===========", obu.num, res[1].substring(0, res[1].length - |
|
|
|
4)) |
|
|
|
decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4), |
|
|
|
function(res) { |
|
|
|
console.log("obu信息", '车辆类型', res, res.substring(28, 30), |
|
|
|
HexToInt(res.substring(28, 30))); |
|
|
|
let cmdArr = [cmd.HOME_DIRECTORY, cmd.OBU_SYSTEM_FILE]; |
|
|
|
bluetoothUtil.transCmd(cmdArr, '20', function(res) { |
|
|
|
var obuStr = res[1]; |
|
|
|
if (obuStr == undefined || obuStr == "undefined" || obuStr == "") { |
|
|
|
tools.alertF("OBU指令不符" + obuStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
if (obuStr.length < 36) { |
|
|
|
tools.alertF("OBU指令长度不符" + obuStr); |
|
|
|
return; |
|
|
|
} |
|
|
|
obu.num = obuStr.substring(20, 36) |
|
|
|
let rand = datas.generateMixed(16); |
|
|
|
let arr = [cmd.OBU_DF01, cmd.OBU_00B400000A + rand + cmd.OBU_4F00]; |
|
|
|
bluetoothUtil.transCmd(arr, '20', function(res) { |
|
|
|
console.log("解密信息kc没问题", res); |
|
|
|
let str2 = res[1].substring(res[1].length - 4, res[1].length); |
|
|
|
if (str2 == "9000") { |
|
|
|
console.log("===========", obu.num, res[1].substring(0, res[1].length - |
|
|
|
4)) |
|
|
|
decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4),function(res) { |
|
|
|
console.log("obu信息", '车辆类型', res, res.substring(28, 30), |
|
|
|
HexToInt(res.substring(28, 30))); |
|
|
|
obu.approvedCount = HexToInt(res.substring(48, 54)); |
|
|
|
obu.axleCount = HexToInt(res.substring(42, 44)); |
|
|
|
obu.axleDistance = HexToInt(res.substring(44, 48)); |
|
|
@@ -414,76 +413,17 @@ |
|
|
|
"x" + |
|
|
|
HexToInt(res.substring(36, 38)) + "x" + HexToInt(res |
|
|
|
.substring(38, 40)) |
|
|
|
tools.hideLoadingAlert(); |
|
|
|
}); |
|
|
|
} |
|
|
|
}) |
|
|
|
return; |
|
|
|
let str = res[1].substring(res[1].length - 4, res[1].length); |
|
|
|
if (str == "9000") { |
|
|
|
if (res[1].length > 52) { |
|
|
|
|
|
|
|
obu.num = res[1].substring(20, 36); |
|
|
|
obu.startTime = res[1].substring(36, 44); |
|
|
|
obu.endTime = res[1].substring(44, 52); |
|
|
|
obu.version = res[1].substring(18, 19) >= 4 ? "4x" : "2x"; |
|
|
|
obu.isJH = res[1].substring(53, 54) == "1" ? "是" : res[1].substring(53, 54) == "0" ? |
|
|
|
"否" : "其他:" + res[1].substring(53, 54); |
|
|
|
|
|
|
|
|
|
|
|
let rand = datas.generateMixed(16); |
|
|
|
let arr = [cmd.OBU_DF01, cmd.OBU_00B400000A + rand + cmd.OBU_4F00]; |
|
|
|
bluetoothUtil.transCmd(arr, '20', function(res) { |
|
|
|
console.log(res); |
|
|
|
let str2 = res[1].substring(res[1].length - 4, res[1].length); |
|
|
|
if (str2 == "9000") { |
|
|
|
console.log("===========", obu.num, res[1].substring(0, res[1].length - |
|
|
|
4)) |
|
|
|
decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4), |
|
|
|
function(res) { |
|
|
|
console.log("obu信息", '车辆类型', res, res.substring(28, 30), |
|
|
|
HexToInt(res.substring(28, 30))); |
|
|
|
obu.approvedCount = HexToInt(res.substring(48, 54)); |
|
|
|
obu.axleCount = HexToInt(res.substring(42, 44)); |
|
|
|
obu.axleDistance = HexToInt(res.substring(44, 48)); |
|
|
|
obu.engineNum = HexToStrig(res.substring(86, 118)); |
|
|
|
obu.type = getVehicleType(HexToInt(res.substring(28, 30))); |
|
|
|
obu.userType = HexToInt(res.substring(30, 32)) == 1 ? |
|
|
|
"个人用户" : |
|
|
|
"单位用户"; |
|
|
|
obu.vehiclePlate = HexToStrig(res.substring(0, 24), 2); |
|
|
|
//获取车牌颜色 |
|
|
|
obu.vehiclePlateColor = getVehiclePlateColor(HexToInt(res |
|
|
|
.substring(24, 28))); |
|
|
|
obu.vin = HexToStrig(res.substring(54, 86)); |
|
|
|
obu.wheelCount = HexToInt(res.substring(40, 42)); |
|
|
|
obu.outsideDimensions = HexToInt(res.substring(32, 36)) + |
|
|
|
"x" + |
|
|
|
HexToInt(res.substring(36, 38)) + "x" + HexToInt(res |
|
|
|
.substring(38, 40)) |
|
|
|
getObuList(); |
|
|
|
|
|
|
|
tools.hideLoadingAlert(); |
|
|
|
//提交设备信息 |
|
|
|
// that.submitDeviceInfo(); |
|
|
|
}); |
|
|
|
//断开蓝牙 |
|
|
|
bluetoothUtil.disconnectDevice(); |
|
|
|
tools.showToastAlert("蓝牙已断开"); |
|
|
|
|
|
|
|
console.log('蓝牙已断开=========') |
|
|
|
return; |
|
|
|
} |
|
|
|
alertF("OBU_00B400000A+rand+OBU_4F00指令长度不符" + res[1]); |
|
|
|
}) |
|
|
|
|
|
|
|
} else { |
|
|
|
alertF("OBU_SYSTEM_FILE指令长度不符" + res[1]); |
|
|
|
} |
|
|
|
tools.hideLoadingAlert(); |
|
|
|
}); |
|
|
|
bluetoothUtil.disconnectDevice(); |
|
|
|
tools.showToastAlert("蓝牙已断开"); |
|
|
|
|
|
|
|
console.log('蓝牙已断开=========') |
|
|
|
return; |
|
|
|
} |
|
|
|
alertF("OBU_SYSTEM_FILE指令长度不符" + res[1]); |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
// } |
|
|
|
}; |
|
|
|
|
|
|
@@ -619,4 +559,4 @@ |
|
|
|
margin: 40rpx; |
|
|
|
text-align: center; |
|
|
|
} |
|
|
|
</style> |
|
|
|
</style> |