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