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.");
            }
        }
示例#3
0
 extern public static int BS2_ScanCard(IntPtr context, UInt32 deviceId, out BS2Card card, OnReadyToScan cbReadyToScan);