diff --git a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart index 4be32618..a7fe8858 100644 --- a/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart +++ b/star_lock/lib/mine/addLock/nearbyLock/nearbyLock_logic.dart @@ -170,145 +170,158 @@ class NearbyLockLogic extends BaseGetXController { int status = reply.data[2]; switch (status) { case 0x00: - //成功 + //成功 AppLog.log("获取锁状态成功"); // 厂商名称 - var vendor = reply.data.sublist(3, 23); + var index = 3; + var vendor = reply.data.sublist(index, index + 20); var vendorStr = utf8String(vendor); state.lockInfo["vendor"] = vendorStr; // state.lockInfo["vendor"] = "XL"; + index = index + 20; AppLog.log("厂商名称 vendorStr:$vendorStr"); // 锁设备类型 - var product = reply.data[23]; + var product = reply.data[index]; state.lockInfo["product"] = product; + index = index + 1; AppLog.log("锁设备类型 product:$product"); // 产品名称 - var model = reply.data.sublist(24, 44); + var model = reply.data.sublist(index, index + 20); var modelStr = utf8String(model); state.lockInfo["model"] = modelStr; // state.lockInfo["model"] = "JL-BLE-01"; + index = index + 20; AppLog.log("产品名称 mmodelStr:$modelStr"); // 软件版本 - var fwVersion = reply.data.sublist(44, 64); + var fwVersion = reply.data.sublist(index, index+20); var fwVersionStr = utf8String(fwVersion); state.lockInfo["fwVersion"] = fwVersionStr; + index = index + 20; AppLog.log("软件版本 fwVersionStr:$fwVersionStr"); // 硬件版本 - var hwVersion = reply.data.sublist(64, 84); + var hwVersion = reply.data.sublist(index, index+20); var hwVersionStr = utf8String(hwVersion); state.lockInfo["hwVersion"] = hwVersionStr; + index = index + 20; AppLog.log("硬件版本 hwVersionStr:$hwVersionStr"); // 厂商序列号 - var serialNum0 = reply.data.sublist(84, 100); + var serialNum0 = reply.data.sublist(index, index + 16); var serialNum0Str = utf8String(serialNum0); state.lockInfo["serialNum0"] = serialNum0Str; // state.lockInfo["serialNum0"] = "${DateTime.now().millisecondsSinceEpoch ~/ 10}"; + index = index + 16; AppLog.log("厂商序列号 serialNum0Str:${serialNum0Str.length}"); // 成品商序列号 - var serialNum1 = reply.data.sublist(100, 116); + var serialNum1 = reply.data.sublist(index, index + 16); var serialNum1Str = utf8String(serialNum1); state.lockInfo["serialNum1"] = serialNum1Str; + index = index + 16; AppLog.log("成品商序列号 serialNum1Str:$serialNum1Str"); // 蓝牙名称 - var btDeviceName = reply.data.sublist(116, 132); + var btDeviceName = reply.data.sublist(index, index + 16); var btDeviceNameStr = utf8String(btDeviceName); state.lockInfo["btDeviceName"] = btDeviceNameStr; + index = index + 16; AppLog.log("蓝牙名称 btDeviceNameStr:$btDeviceNameStr"); // 电池剩余电量 - var battRemCap = reply.data[132]; + var battRemCap = reply.data[index]; state.lockInfo["electricQuantity"] = battRemCap; + index = index + 1; AppLog.log("电池剩余电量 battRemCap:$battRemCap"); // 备用电池剩余电量 - // var battRemCapStandby = reply.data[133]; - // state.lockInfo["electricQuantityStandby"] = battRemCapStandby; - // AppLog.log("电池剩余电量 battRemCap:$battRemCap"); + var battRemCapStandby = reply.data[index]; + state.lockInfo["electricQuantityStandby"] = battRemCapStandby; + index = index + 1; + AppLog.log("电池剩余电量 battRemCap:$battRemCap"); // 重置次数 - var restoreCounter = reply.data.sublist(134, 136); - state.lockInfo["restoreCount"] = - restoreCounter[0] * 256 + restoreCounter[1]; - AppLog.log( - "重置次数 restoreCounter:${restoreCounter[0] * 256 + restoreCounter[1]}"); + var restoreCounter = reply.data.sublist(index, index + 2); + state.lockInfo["restoreCount"] = restoreCounter[0] * 256 + restoreCounter[1]; + index = index + 2; + AppLog.log("重置次数 restoreCounter:${restoreCounter[0] * 256 + restoreCounter[1]}"); // 重置时间 - var restoreDate = reply.data.sublist(136, 140); + var restoreDate = reply.data.sublist(index, index + 4); int restoreDateValue = ((0xff & restoreDate[(0)]) << 24 | - (0xff & restoreDate[1]) << 16 | - (0xff & restoreDate[2]) << 8 | - (0xFF & restoreDate[3])); + (0xff & restoreDate[1]) << 16 | + (0xff & restoreDate[2]) << 8 | + (0xFF & restoreDate[3])); // String restoreDateStr = DateTool().dateToYMDHNSString(restoreDateValue.toString()); state.lockInfo["restoreDate"] = restoreDateValue * 1000; + index = index + 4; AppLog.log("重置时间 restoreDateValue:$restoreDateValue"); // 主控芯片型号 - var icPartNo = reply.data.sublist(140, 150); + var icPartNo = reply.data.sublist(index, index + 10); var icPartNoStr = utf8String(icPartNo); state.lockInfo["icPartNo"] = icPartNoStr; + index = index + 10; AppLog.log("主控芯片型号 icPartNoStr:$icPartNoStr"); // 有效时间 - var indate = reply.data.sublist(150, 154); + var indate = reply.data.sublist(index, index + 4); int indateValue = ((0xff & indate[(0)]) << 24 | - (0xff & indate[1]) << 16 | - (0xff & indate[2]) << 8 | - (0xFF & indate[3])); + (0xff & indate[1]) << 16 | + (0xff & indate[2]) << 8 | + (0xFF & indate[3])); // String indateStr = DateTool().dateToYMDHNSString("$indateValue"); state.lockInfo["indate"] = indateValue * 1000; + index = index + 4; AppLog.log("有效时间 indateValue:$indateValue"); // mac地址 - var macAddress = reply.data.sublist(154, 174); + var macAddress = reply.data.sublist(index, index + 20); var macAddressStr = utf8String(macAddress); state.lockInfo["mac"] = macAddressStr; + index = index + 20; AppLog.log("mac地址 macAddressStr:$macAddressStr"); - var index = 174; // 锁特征值字符串长度 var featureValueLength = reply.data[index]; + index = index + 1; AppLog.log("锁特征值字符串长度 featureValueLength:$featureValueLength"); // 锁特征值说明(本机能支持的功能) // 获取到锁给的字符数组 - var featureNetxLength = index + featureValueLength + 1; + var featureNetxLength = index + featureValueLength; if (reply.data.length < featureNetxLength) { showToast("锁数据异常,请重试"); return; } - var featureValue = - reply.data.sublist(index + 1, index + featureValueLength + 1); + var featureValue = reply.data.sublist(index, index + featureValueLength); String featureValueStr = asciiString(featureValue); state.featureValue = featureValueStr; // List allFeatureValueTwoList = charListChangeIntList(featureValue); // AppLog.log("featureValueLength:$featureValueLength featureValue:$featureValue \n featureValueStr:$featureValueStr"); - index = index + featureValueLength + 1; + index = index + featureValueLength; AppLog.log("锁特征值字符串 featureValueStr:$featureValueStr"); // 使能特征值字符串长度 var featureEnValLength = reply.data[index]; + index = index + 1; AppLog.log("使能特征值字符串长度 featureEnValLength:$featureEnValLength"); // 使能锁特征值说明(本机启用的功能) - var featureEnNextLength = index + featureEnValLength + 1; + var featureEnNextLength = index + featureEnValLength; if (reply.data.length < featureEnNextLength) { showToast("锁数据异常,请重试"); return; } - var featureEnVal = - reply.data.sublist(index + 1, index + featureEnValLength + 1); + var featureEnVal = reply.data.sublist(index, index + featureEnValLength); String featureEnValStr = asciiString(featureEnVal); state.featureSettingValue = featureEnValStr; // List allFeatureEnValTwoList = charListChangeIntList(featureEnVal); // AppLog.log("featureEnValLength:$featureEnValLength featureEnVal:$featureEnVal \n featureEnValStr:$featureEnValStr"); - index = index + featureEnValLength + 1; + index = index + featureEnValLength; AppLog.log("使能锁特征值说明 featureEnValStr:$featureEnValStr"); // 支持的带参数特征值的总条目数 @@ -328,7 +341,7 @@ class NearbyLockLogic extends BaseGetXController { break; case 0x06: - //无权限 + //无权限 var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); // IoSenderManage.senderGetLockStatu( @@ -346,8 +359,8 @@ class NearbyLockLogic extends BaseGetXController { ); break; default: - //失败 - // state.sureBtnState.value = 0; + //失败 + // state.sureBtnState.value = 0; break; } }