void scanAndAddBlacklist(IntPtr sdkContext, UInt32 deviceID, List <BS2BlackList> blackList, int amount) { cbCardOnReadyToScan = new API.OnReadyToScan(ReadyToScanForCard); BS2Card card = Util.AllocateStructure <BS2Card>(); BS2BlackList blacklistItem = Util.AllocateStructure <BS2BlackList>(); for (int idx = 0; idx < amount; ++idx) { Console.WriteLine("Trying to scan card."); BS2ErrorCode result = (BS2ErrorCode)API.BS2_ScanCard(sdkContext, deviceID, out card, cbCardOnReadyToScan); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Got error({0}).", result); return; } else if (Convert.ToBoolean(card.isSmartCard)) { BS2SmartCardData smartCard = Util.ConvertTo <BS2SmartCardData>(card.cardUnion); Array.Copy(smartCard.cardID, blacklistItem.cardID, BS2Envirionment.BS2_CARD_DATA_SIZE); blacklistItem.issueCount = smartCard.header.issueCount; } else { BS2CSNCard csnCard = Util.ConvertTo <BS2CSNCard>(card.cardUnion); Array.Copy(csnCard.data, blacklistItem.cardID, BS2Envirionment.BS2_CARD_DATA_SIZE); blacklistItem.issueCount = 0; //should set count of issue to 0 } bool isDuplicated = false; foreach (BS2BlackList item in blackList) { if (blacklistItem.cardID.SequenceEqual(item.cardID)) { isDuplicated = true; break; } } if (isDuplicated) { Console.WriteLine("Already exist blacklist. try again"); --idx; continue; } blackList.Add(blacklistItem); } cbCardOnReadyToScan = null; }
void enrollUserEx(IntPtr sdkContext, UInt32 deviceID, UInt32 slaveID, string userName, string userID, string pin) { BS2ErrorCode result; Console.WriteLine("Do you want Enroll user for test? [y/n]"); Console.Write(">>>> "); if (Util.IsYes()) { BS2UserBlobEx[] user = Util.AllocateStructureArray <BS2UserBlobEx>(1); user[0].user.version = 0; user[0].user.formatVersion = 0; user[0].user.faceChecksum = 0; user[0].user.fingerChecksum = 0; user[0].user.numCards = 1; user[0].user.numFingers = 0; user[0].user.numFaces = 0; user[0].user.flag = 0; user[0].cardObjs = IntPtr.Zero; user[0].fingerObjs = IntPtr.Zero; user[0].faceObjs = IntPtr.Zero; Console.WriteLine("Enter the ID for the User which you want to enroll"); Console.Write(">>>> "); byte[] userIDArray = Encoding.UTF8.GetBytes(userID); Array.Clear(user[0].user.userID, 0, BS2Environment.BS2_USER_ID_SIZE); Array.Copy(userIDArray, user[0].user.userID, userIDArray.Length); user[0].setting.startTime = 946684800; user[0].setting.endTime = 1924991999; user[0].setting.fingerAuthMode = (byte)BS2FingerAuthModeEnum.NONE; user[0].setting.idAuthMode = (byte)BS2IDAuthModeEnum.NONE; user[0].setting.cardAuthMode = (byte)BS2CardAuthModeEnum.NONE; Array.Clear(user[0].name, 0, BS2Environment.BS2_USER_NAME_LEN); byte[] userNameArray = Encoding.UTF8.GetBytes(userName); Array.Copy(userNameArray, user[0].name, userNameArray.Length); Array.Clear(user[0].pin, 0, BS2Environment.BS2_PIN_HASH_SIZE); IntPtr pinCode = Marshal.AllocHGlobal(BS2Environment.BS2_PIN_HASH_SIZE); result = (BS2ErrorCode)API.BS2_MakePinCode(sdkContext, pin, pinCode); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Can't generate pin code."); return; } Marshal.Copy(pinCode, user[0].pin, 0, BS2Environment.BS2_PIN_HASH_SIZE); Marshal.FreeHGlobal(pinCode); int structSize = Marshal.SizeOf(typeof(BS2CSNCard)); BS2Card card = Util.AllocateStructure <BS2Card>(); user[0].cardObjs = Marshal.AllocHGlobal(structSize * user[0].user.numCards); IntPtr curCardObjs = user[0].cardObjs; cbCardOnReadyToScan = new API.OnReadyToScan(ReadyToScanForCard); Console.WriteLine("Trying to scan card."); result = (BS2ErrorCode)API.BS2_ScanCard(sdkContext, slaveID, out card, cbCardOnReadyToScan); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Got error({0}).", result); return; } else if (Convert.ToBoolean(card.isSmartCard)) { Console.WriteLine("CSN card is only available. Try again"); } else { Marshal.Copy(card.cardUnion, 0, curCardObjs, structSize); curCardObjs += structSize; } cbCardOnReadyToScan = null; result = (BS2ErrorCode)API.BS2_EnrolUserEx(sdkContext, deviceID, user, 1, 1); if (result != BS2ErrorCode.BS_SDK_SUCCESS) { Console.WriteLine("Enroll user failed."); return; } Console.WriteLine("Enroll user succeed."); } }
extern public static int BS2_ScanCard(IntPtr context, UInt32 deviceId, out BS2Card card, OnReadyToScan cbReadyToScan);