handleAddPwdCardFingerprintWithData function
处理 为指定用户添加密码、卡、指纹 返回的数据
Implementation
void handleAddPwdCardFingerprintWithData(List<int> value) async {
// 0xFE 0X05 LEN NID TYPE ID PASSWORD/FINGERID NUM/CARDID ERR_CODE checksum
// 获取有效数据的长度
int len = value[2];
String cmdName = '为指定用户添加密码、卡、指纹';
//获取解密后的有效数据
List<int> dataDecrypt = await decryptTemp(value);
// ERR_CODE为0x00时表示创建用户成功,为其他字段时则表示创建用户失败,其中为0X0B时表示用户已经重复
int ERR_CODE = dataDecrypt[len - 1];
if (ERR_CODE != 0) {
print('为指定用户添加密码、卡、指纹,失败,错误码:$ERR_CODE');
ZygBluetoothTool.cmdMsgHandle('为指定用户添加密码、卡、指纹,失败,错误码:$ERR_CODE',
{'cmd': cmdName, 'ERR_CODE': ERR_CODE});
if (ERR_CODE == 4) {
print('超时');
ZygBluetoothTool.cmdMsgHandle(
'失败原因:超时', {'cmd': cmdName, 'ERR_CODE': ERR_CODE});
}
if (ERR_CODE == 9) {
print('容量已满');
ZygBluetoothTool.cmdMsgHandle(
'失败原因:容量已满', {'cmd': cmdName, 'ERR_CODE': ERR_CODE});
}
if (ERR_CODE == 11) {
print('此密码已经添加过了');
ZygBluetoothTool.cmdMsgHandle(
'此密码已经添加过了', {'cmd': cmdName, 'ERR_CODE': ERR_CODE});
}
return;
}
if (len == 1) {
//长度为1,则说明等待用户下一步的动作,比如将卡片靠近锁进行录入,比如将指纹进行录入
print('嘀一声后,等待用户下一步动作,比如录入卡片,比如录入指纹');
ZygBluetoothTool.cmdMsgHandle(
'嘀一声后,请执行下一步动作,比如录入卡片,比如录入指纹', {'cmd': cmdName});
return;
}
// NID为此次用户的ID
int NID = dataDecrypt[0];
// ID ,表示当前添加的密码/卡/指纹对应的存储ID
int ID = dataDecrypt[2];
// TYPE 指令类型,6表示卡片,7表示指纹,8表示胁迫指纹,2表示普通用户密码
int TYPE = dataDecrypt[1];
if (TYPE == 7 || TYPE == 8) {
// 获取 num,录入指纹的次数,录入3次才能成功
int NUM = dataDecrypt[len - 2];
print('第$NUM次录入,3次录入才能成功,请再次录入');
ZygBluetoothTool.cmdMsgHandle(
'第$NUM次录入,3次录入才能成功,请再次录入', {'cmd': cmdName, 'ERR_CODE': ERR_CODE});
if (NUM >= 3) {
// 指纹id
int FINGERID = dataDecrypt[len - 2];
ZygBluetoothTool.cmdMsgHandle('指令执行成功,' + '指纹ID:$FINGERID',
{'cmd': cmdName, 'ERR_CODE': ERR_CODE, 'FINGERID': FINGERID});
return;
}
} else if (TYPE == 6) {
// 卡id
int cardID = dataDecrypt[3];
ZygBluetoothTool.cmdMsgHandle(
'指令执行成功,' + '卡ID:$cardID', {'cmd': cmdName, 'cardID': cardID});
return;
} else if (TYPE == 1 ||
TYPE == 2 ||
TYPE == 3 ||
TYPE == 4 ||
TYPE == 5 ||
TYPE == 0x0b) {
// 1 (0x01) 管理员密码
// 2 (0x02) 普通用户密码
// 3 (0x03) 超级用户密码
// 4 (0x04) 动态密码
// 5 (0x05) 防胁迫密码
// 13 (0x0d) 本地一次性密码
List<int> password = dataDecrypt.sublist(3, len - 1);
String passwordStr = int2RadixString_16(password);
// print(intList2str(password).toString() + ',密码ID:$ID');
ZygBluetoothTool.cmdMsgHandle(
'指令执行成功,' + '密码是:' + passwordStr + ',密码ID:$ID',
{'cmd': cmdName, 'password': passwordStr});
// int2basse16(password)
}
// print('mySave(saveKey.bluetoothUserMap_key, jsonEncode(user))');
}