示例#1
0
        public List <byte[]> MifareClassic_ReadSector(MifareClassic mfc, int Sector)
        {
            int blockCount = mfc.GetBlockCountInSector(Sector);
            var lst        = new List <byte[]>(blockCount);
            int readIndex  = mfc.SectorToBlock(1);

            for (int i = 0; i < blockCount; i++)
            {
                lst[i] = mfc.ReadBlock(readIndex);
                readIndex++;
            }
            return(lst);
        }
        public List <object> LerTodosOsSetoresDoCartao()
        {
            byte[]        byteRead;                           // Irá armazenar os byte lidos do cartão
            bool          auth         = false;               // Valida se existe ou não permissão para ler o bloco
            int           quantSetores = 0;                   // Quantidade de setores existentes no cartão
            int           blocoCount   = 0;                   // Quantidades de blocos existentes no cartão
            int           blocoIndex   = 0;                   // Irá armazenar o indice que esta sendo lido do cartão
            List <object> ByteRetorno  = new List <object>(); // Lista com a leitura de todos os blocos e setores

            try
            {
                // Faz a conexão com o cartão
                ValidConexaoCartao();

                // Irá armazenar a quantidade de setores existentes no cartão
                quantSetores = MifareClassic.BlockSize;

                // Percorre todos os setores existentes no cartão
                for (int i = 0; i < quantSetores; i++)
                {
                    // Faz a validação de permissão para a leitura do bloco A
                    auth = ValidPermissaoBlocoA(i);

                    if (!auth)
                    {
                        // Faz a validação de permissão para a leitura do bloco B
                        auth = ValidPermissaoBlocoB(i);
                    }

                    if (auth)
                    {
                        // Busca a quanidade de blocos em um setor
                        blocoCount = mifareClassic.GetBlockCountInSector(i);

                        // Percore todos os blocos do setor
                        for (int j = 0; j < blocoCount; j++)
                        {
                            // É necessário fazer novamente a validação de permissão Bloco a bloco

                            // Faz a validação de permissão para a leitura do bloco A
                            auth = ValidPermissaoBlocoA(j);

                            if (!auth)
                            {
                                // Faz a validação de permissão para a leitura do bloco B
                                auth = ValidPermissaoBlocoB(j);
                            }

                            if (auth)
                            {
                                // seta o indice do setor dentro do bloco
                                blocoIndex = mifareClassic.SectorToBlock(j);

                                // Faz a leitura de um BLOCO no setor
                                byteRead = mifareClassic.ReadBlock(blocoIndex);
                                ByteRetorno.Add(byteRead);
                            }
                        }
                    }
                }
            }
            catch (IOException e)
            {
                throw new IOException(e.Message);
            }
            finally
            {
                // Fecha a conexão com o cartão
                DesconectaCartao();
                this.GravaTempoFinal();
            }

            return(ByteRetorno);
        }