internal ACR122U_Status(bool Card, ACR122U_StatusErrorCodes ErrorCode, bool FieldPresent, byte NumberOfTargets, byte LogicalNumber, ACR122U_StatusBitRateInReception BitRateInReception, ACR122U_StatusBitsRateInTransmiton BitRateInTransmition, ACR122U_StatusModulationType ModulationType) { this.Card = Card; this.ErrorCode = ErrorCode; this.FieldPresent = FieldPresent; this.NumberOfTargets = NumberOfTargets; this.LogicalNumber = LogicalNumber; this.BitRateInReception = BitRateInReception; this.BitRateInTransmition = BitRateInTransmition; this.ModulationType = ModulationType; }
/*Get Status * Send * FF 00 00 00 02 D4 04 * Returns * D5 05 [ErrorCode] [Field] [NumberOfTargets] [LogicalNumber] [BitRateInReception] [BitRateInTransmission] [ModulationType] 80 90 00 * Or for no card D5 05 00 00 00 80 90 00 00 00 00 00 * ->Error Code as Unknown * [Errorcodes not decemitated fully] * ->Field as * [Field:0x00=RF field not Present] * ->Number of Target as * [NumberOfTargets:00-FF(only seen 1 with card)] * ->Bits Rate In Reception as * [BitsRateInTransmiton:(0x)00=106kbps,01=212kbps,02=424kbps] * ->Bits Rate In Transmiton as * [BitsRateInTransmiton:(0x)00=106kbps,01=212kbps,02=424kbps] * ->Modulation Type as * [ModulationType:(0x)00=ISO1443orMifare,01=ActiveMode,02=InnovisionJewelTag] */ /// <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 ACR122U_ResposeErrorCodes GetStatus(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) { byte[] Data; byte[] CommandAsBytes = new byte[] { 0xFF, 0x00, 0x00, 0x00, 0x02, 0xD4, 0x04 }; TransmitData(CommandAsBytes, out Data); ErrorCode = (ACR122U_StatusErrorCodes)Data[2]; FieldPresent = Data[3] != 0; NumberOfTargets = Data[4]; 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); } 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; LastACRResultCode = ACR122U_ResposeErrorCodes.Success; return(LastACRResultCode); } Card = false; LogicalNumber = 0; BitRateInReception = ACR122U_StatusBitRateInReception.NoReception; BitRateInTransmition = ACR122U_StatusBitsRateInTransmiton.NoTransmiton; ModulationType = ACR122U_StatusModulationType.NoCardDetected; LastACRResultCode = ACR122U_ResposeErrorCodes.Success; return(LastACRResultCode); }
/*Get Status * Send * FF 00 00 00 02 D4 04 * Returns * D5 05 [ErrorCode] [Field] [NumberOfTargets] [LogicalNumber] [BitRateInReception] [BitRateInTransmission] [ModulationType] 80 90 00 * Or for no card D5 05 00 00 00 80 90 00 00 00 00 00 * ->Error Code as Unknown * [Errorcodes not decemitated fully] * ->Field as * [Field:0x00=RF field not Present] * ->Number of Target as * [NumberOfTargets:00-FF(only seen 1 with card)] * ->Bits Rate In Reception as * [BitsRateInTransmiton:(0x)00=106kbps,01=212kbps,02=424kbps] * ->Bits Rate In Transmiton as * [BitsRateInTransmiton:(0x)00=106kbps,01=212kbps,02=424kbps] * ->Modulation Type as * [ModulationType:(0x)00=ISO1443orMifare,01=ActiveMode,02=InnovisionJewelTag] */ /// <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 ACR122U_ResposeErrorCodes GetStatus(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) { byte[] Data; byte[] CommandAsBytes = new byte[] { 0xFF, 0x00, 0x00, 0x00, 0x02, 0xD4, 0x04 }; TransmitData(CommandAsBytes, out Data); ErrorCode = (ACR122U_StatusErrorCodes)Data[2]; FieldPresent = Data[3] != 0; NumberOfTargets = Data[4]; if (Data.Length == 12 && 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]; LastACRResultCode = ACR122U_ResposeErrorCodes.Success; return(LastACRResultCode); } else if (Data.Length == 8 && 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; LastACRResultCode = ACR122U_ResposeErrorCodes.Success; return(LastACRResultCode); } throw new ACR122U_SmartCardException(ACR122U_ResposeErrorCodes.APIError, ErrorCodes.SCARD_S_SUCCESS, "API has recived a unexpected value back."); }
/// <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.Length == 12 && 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); } else if (Data.Length == 8 && 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); } throw new ACR122U_SmartCardException(ACR122U_ResposeErrorCodes.APIError, ErrorCodes.SCARD_S_SUCCESS, "API has recived a unexpected value back."); }