public static bool Gravar(string matricula, int opcao) { // suporta no máximo 16 caracteres if (matricula.Length <= 16) { // normaliza a string matricula = matricula.PadLeft(16, '0'); // autenticação if (Acura.Autenticar()) { // converte a matricula string para array de bytes byte[] _matricula = new byte[16]; for (int i = 0; i < 16; i++) { _matricula[i] = (byte)matricula[i].GetHashCode(); } // gravação bool sucesso = false; sucesso = mf.mfWriteEx(0, MifareReader.bKeyTypeConstants.KEY_B, 1, _matricula); mf.mfAutoMode(true); return(sucesso); } mf.mfAutoMode(true); return(false); } else { throw new IndexOutOfRangeException("Comprimento máximo da string deve ser 16"); } }
/// <summary> /// Realiza a leitura do conteúdo do cartão. /// <para>É necessário antes verificar se o cartão está posicionado</para> /// </summary> /// <returns>a string contendo a matrícula do cartão ou null em caso de falha</returns> public static string Ler() { // autenticação if (Acura.Autenticar()) { // leitura byte[] _matricula = new byte[16]; if (mf.mfRead(1, ref _matricula)) { // converte bytes para string string matricula = ""; foreach (char c in _matricula) { matricula += c; } // reativa o automode pois ele é desabilitado durante a leitura mf.mfAutoMode(true); return(matricula); } } mf.mfAutoMode(true); return(null); }