/// <summary> /// Sets and returns the Opperating params of system with out need of card /// </summary> /// <param name="DataOut"> A enumerated byte as /// [AutoPICCPolling:1=Enable,0=Disable] /// [AutoATSGeneration:1=Enable,0=Disable] /// [PollingInterval:1=250ms,0=500ms] /// [Felica424K:1=Detect,0=Ignore] /// [Felica212K:1=Detect,0=Ignore] /// [Topaz:1=Detect,0=Ignore] /// [ISO14443TypeB:1=Detect,0=Ignore] /// [ISO14443TypeA:1=Detect,0=Ignore] /// </param> /// <returns></returns> public static ACR122U_ResposeErrorCodes SetPICCOperatingParameterStateStatic(WinSmartCardContext Context, ref ACR122U_PICCOperatingParametersControl SetInDataOut) { byte SetInData = (byte)SetInDataOut; ACR122U_ResposeErrorCodes Return = SetPICCOperatingParameterStateStatic(Context, ref SetInData); SetInDataOut = (ACR122U_PICCOperatingParametersControl)SetInData; return(Return); }
/// <summary> /// Sets and returns the Opperating params of system with out need of card /// </summary> /// <param name="DataOut"> A byte as /// [AutoPICCPolling:1=Enable,0=Disable] /// [AutoATSGeneration:1=Enable,0=Disable] /// [PollingInterval:1=250ms,0=500ms] /// [Felica424K:1=Detect,0=Ignore] /// [Felica212K:1=Detect,0=Ignore] /// [Topaz:1=Detect,0=Ignore] /// [ISO14443TypeB:1=Detect,0=Ignore] /// [ISO14443TypeA:1=Detect,0=Ignore] /// </param> /// <returns></returns> public static ACR122U_ResposeErrorCodes SetPICCOperatingParameterStateStatic(WinSmartCardContext Context, ref byte SetInDataOut) { bool HasCard; byte[] Data; byte[] CommandAsBytes = new byte[5] { 0xFF, 0x00, 0x51, SetInDataOut, 0x00 }; Context.Control(CommandAsBytes, out Data, out HasCard); return(RetrieveDataCodes(ref Data, out SetInDataOut)); }
/// <summary> /// Turns RFID anntenna off with out need of card /// </summary> /// <returns></returns> public static ACR122U_ResposeErrorCodes TurnAnntennaOffStatic(WinSmartCardContext Context) { bool HasCard; byte[] DataOut; byte[] CommandAsBytes = new byte[7] { 0xFF, 0x00, 0x00, 0x00, 0x04, 0xD4, 0x00 }; Context.Control(CommandAsBytes, out DataOut, out HasCard); return(RetrieveDataCodes(ref DataOut)); }
/// <summary> /// Gets the Status from the ACR122 using its internal method /// </summary> /// <param name="ACR122U_Status">A container with all of the status</param> /// <returns></returns> public static ACR122U_ResposeErrorCodes GetStatusStatic(WinSmartCardContext Context, out ACR122U_Status ACR122U_Status) { bool Card; ACR122U_StatusErrorCodes ErrorCode; bool FieldPresent; byte NumberOfTargets; byte LogicalNumber; ACR122U_StatusBitRateInReception BitRateInReception; ACR122U_StatusBitsRateInTransmiton BitRateInTransmition; ACR122U_StatusModulationType ModulationType; ACR122U_ResposeErrorCodes Error = GetStatusStatic(Context, out Card, out ErrorCode, out FieldPresent, out NumberOfTargets, out LogicalNumber, out BitRateInReception, out BitRateInTransmition, out ModulationType); ACR122U_Status = new ACR122U_Status(Card, ErrorCode, FieldPresent, NumberOfTargets, LogicalNumber, BitRateInReception, BitRateInTransmition, ModulationType); return(Error); }
/// <summary> /// Sets the buzzer and LEDs to work in a T1 and T2 cycle like in a alarm with out need for card /// </summary> /// <param name="LEDControl"> A enumberated byte as /// [GreenBlinkingMask(0x80):1=Blink,0=Dont] /// [RedBlinkingMask(0x40):1=Blink,0=Dont] /// [InitialGreenBlinkingState(0x20):1=On,0=Off] /// [InitialRedBlinkingState(0x10):1=On,0=Off] /// [GreenLEDStateMask(0x08):1=Update,0=Dont] /// [RedLEDStateMask(0x04):1=Update,0=Dont] /// [GreenFinalState(0x02):1=On,0=Off] /// [BuzzerOnT1Cycle(0x02):1=On,0=Off] /// [RedFinalState(0x01):1=On,0=Off] </param> /// <param name="T1Duration">T1Duration byte(as value x 100ms)</param> /// <param name="T2Durration">T2Duration byte(as value x 100ms)</param> /// <param name="TimesToRepeat">The Number of times that It sould repeat both cycles</param> /// <param name="BuzzerControl"></param> A enumberated byte as /// [BuzzerOnT1Cycle(0x02):1=On,0=Off] /// [RedFinalState(0x01):1=On,0=Off] /// [BuzzerOnT12Cycle(0x01):1=On,0=Off] /// <param name="DataOut">Some strange data that to this day I'm not sure of is incons only consi is the card comes on and of is +1</param> /// <returns></returns> public static ACR122U_ResposeErrorCodes SetLEDandBuzzerControlStatic(WinSmartCardContext Context, ACR122U_LEDControl LEDControl, byte T1Duration, byte T2Durration, byte TimesToRepeat, ACR122U_BuzzerControl BuzzerControl, out byte DataOut) { if (!Enum.IsDefined(typeof(ACR122U_BuzzerControl), BuzzerControl)) { throw new Exception("Your BuzzerControl selection was not valid."); } bool HasCard; byte[] Data; byte[] CommandAsBytes = new byte[8] { 0xFF, 0x00, 0x40, (byte)LEDControl, 0x04, T1Duration, T1Duration, (byte)BuzzerControl }; Context.Control(CommandAsBytes, out Data, out HasCard); return(RetrieveDataCodes(ref Data, out DataOut)); }
/// <summary> /// Gets the Status from the ACR122 using its internal method /// </summary> /// <param name="Card"></param> /// <param name="ErrorCode"></param> /// <param name="FieldPresent"></param> /// <param name="NumberOfTargets"></param> /// <param name="LogicalNumber"></param> /// <param name="BitRateInReception"></param> /// <param name="BitRateInTransmition"></param> /// <param name="ModulationType"></param> /// <returns></returns> public static ACR122U_ResposeErrorCodes GetStatusStatic(WinSmartCardContext Context, out bool Card, out ACR122U_StatusErrorCodes ErrorCode, out bool FieldPresent, out byte NumberOfTargets, out byte LogicalNumber, out ACR122U_StatusBitRateInReception BitRateInReception, out ACR122U_StatusBitsRateInTransmiton BitRateInTransmition, out ACR122U_StatusModulationType ModulationType) { bool HasCard; byte[] Data; byte[] CommandAsBytes = new byte[] { 0xFF, 0x00, 0x00, 0x00, 0x02, 0xD4, 0x04 }; Context.Control(CommandAsBytes, out Data, out HasCard); ErrorCode = (ACR122U_StatusErrorCodes)Data[2]; FieldPresent = Data[3] != 0; NumberOfTargets = Data[4]; //required as data length doesnt change but some data is droped while leaving trailing 0s to force length of the same //if a card is returned with a card this is the values if (Data[9] == 0x80 && Data[10] == 0x90 && Data[11] == 0x00) { Card = true; LogicalNumber = Data[5]; BitRateInReception = (ACR122U_StatusBitRateInReception)Data[6]; BitRateInTransmition = (ACR122U_StatusBitsRateInTransmiton)Data[7]; ModulationType = (ACR122U_StatusModulationType)Data[8]; return(ACR122U_ResposeErrorCodes.Success); } //if a card is returned with out card this is the values else if (Data[5] == 0x80 && Data[6] == 0x90 && Data[7] == 0x00) { Card = false; LogicalNumber = 0; BitRateInReception = ACR122U_StatusBitRateInReception.NoReception; BitRateInTransmition = ACR122U_StatusBitsRateInTransmiton.NoTransmiton; ModulationType = ACR122U_StatusModulationType.NoCardDetected; return(ACR122U_ResposeErrorCodes.Success); } else { throw new ACR122U_SmartCardException(ACR122U_ResposeErrorCodes.APIError, ErrorCodes.SCARD_S_SUCCESS); } }
ACR122U_SmartCard(WinSmartCardContext Parent, int Card) : base(Parent, Card) { }