getAdd_pwd_card_fingerprint_data function

Future<List<int>> getAdd_pwd_card_fingerprint_data(
  1. int NID,
  2. BluetoothCmdType cmdTYPE,
  3. List<int>? PASSWORD
)

获取 添加密码/卡/指纹 的数据

Implementation

Future<List<int>> getAdd_pwd_card_fingerprint_data(
    int NID, BluetoothCmdType cmdTYPE, List<int>? PASSWORD) async {
  // TYPE 的定义
  // 1 (0x01)	管理员密码
  // 2 (0x02) 	普通用户密码
  // 3  (0x03)	超级用户密码
  // 4  (0x04)	动态密码
  // 5  (0x05)	防胁迫密码
  // 6  (0x06)	卡
  // 7  (0x07)	指纹
  // 8  (0x08)	防胁迫指纹
  // 13 (0x0d)	本地一次性密码

  // 0xFE 0X05 LEN SNO NID TYPE PASSWORD checksum
  // 指令
  int cmd = 0x05;
  // 获取SNO
  final List<int> snoList = await getSNOList();
  // 获取NID
  // int NID = 4;
  // TYPE 04代表动态密码
  // int TYPE = 0x01;
  // int TYPE = 0x02;
  // int TYPE = 0x06;
  // int TYPE = 0x07;
  // PASSWORD 为需要增加的密码,如果是添加卡/指纹,则PASSWORD为空;PASSWORD 用BCD码表示,如密码设置为123456,则表示为0x12,0x34,0x56,如遇密码为奇数,不足补F, 如1234567, 0x12,0x34,0x56,0X7F
  // List<int> PASSWORD = [0x65, 0x43, 0x21];

  int TYPE = cmdTYPE.index;

  // List<int> PASSWORD = [0x55, 0x55, 0x55];
  // List<int> PASSWORD = [];

  if (TYPE == 1 || TYPE == 2 || TYPE == 3 || TYPE == 4 || TYPE == 5) {
    if (PASSWORD == null) {
      print('密码是空');
      ZygBluetoothTool.cmdMsgHandle('错误:密码是空', {'cmdCode': cmd});
      return [];
    }

    if (PASSWORD.length != 3) {
      print('密码长度不对');
      ZygBluetoothTool.cmdMsgHandle('错误:密码长度不对', {'cmdCode': cmd});
      return [];
    }
  } else {
    PASSWORD = [];
  }

  //有效数据
  List<int> subData = [...snoList, NID, TYPE, ...PASSWORD];
  return tempEncrypt(cmd, subData);
}