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; }
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; }
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)); }