Ejemplo n.º 1
0
        /*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.");
        }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
        /// <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.");
        }
        /*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);
        }