예제 #1
0
        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;
        }
예제 #2
0
        public void scanCard(IntPtr sdkContext, UInt32 deviceID, bool isMasterDevice)
        {
            BS2Card card;

            cbCardOnReadyToScan = new API.OnReadyToScan(ReadyToScanForCard);
            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);
            }
            else
            {
                if (Convert.ToBoolean(card.isSmartCard))
                {
                    UInt16           hdrCRC;
                    UInt16           cardCRC;
                    BS2SmartCardData smartCard = Util.ConvertTo <BS2SmartCardData>(card.cardUnion);

                    result = computeCRC(smartCard, out hdrCRC, out cardCRC);
                    if (result != BS2ErrorCode.BS_SDK_SUCCESS)
                    {
                        Console.WriteLine("Can't compute CRC16({0})", result);
                    }
                    else if (smartCard.header.hdrCRC != hdrCRC)
                    {
                        Console.WriteLine("Get a header crc mismatch(expected[{0}] computed[{1}])", smartCard.header.hdrCRC, hdrCRC);
                    }
                    else if (smartCard.header.cardCRC != cardCRC)
                    {
                        Console.WriteLine("Get a card crc mismatch(expected[{0}] computed[{1}])", smartCard.header.cardCRC, cardCRC);
                    }
                    else
                    {
                        print(sdkContext, smartCard);
                    }
                }
                else
                {
                    BS2CSNCard csnCard = Util.ConvertTo <BS2CSNCard>(card.cardUnion);
                    print(sdkContext, csnCard);
                }
            }

            cbCardOnReadyToScan = null;
        }
예제 #3
0
 void print(IntPtr sdkContext, BS2CSNCard csnCard)
 {
     Console.WriteLine(">>>> CSN Card type[{0}] size[{1,2}] data[{2}]", (BS2CardTypeEnum)csnCard.type, csnCard.size, BitConverter.ToString(csnCard.data));
 }