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