## Introdução

O Wrapper C# pode ser encontrada no Kit de desenvolvimento do iDBIO. O wrapper é composto de uma DLL que pode ser encontrada na pasta "C#".

Esta biblioteca é somente um wrapper, é necessário que a DLL libcidbio.dll esteja na mesma pasta que esta DLL para que a biblioteca funcione apropradamente.

Todos os métodos apresentados abaixo pertencem à classe CIDBio.

## Códigos de Retorno

public static string GetErrorMessage (RetCode error)

Retorna mensagem em inglês do erro passado.

Parâmetros de entrada:

- error: RetCode
  Código de erro.

Parâmetros de retorno:

- Retorno: string
  Descrição em inglês do erro.

Todas as funções desta biblioteca retornam um enum RetCode. Este código de retorno pode indicar uma das 3 situações abaixo:

- Sucesso (== RetCode.SUCCESS) - Operação foi realizada com sucesso
- Aviso (> RetCode.SUCCESS) - Operação foi realizada mas com alguma ressalva
- Erro (< RetCode.SUCCESS) - Operação falhou

Este enum é descrito pela tabela abaixo:

Valor | Nome | Descrição
--- | --- | ---
0 | SUCCESS | Operação realizada com sucesso
1 | WARNING_ALREADY_INIT | Biblioteca já inicializada
2 | WARNING_NO_IDS_ON_DEVICE | Nenhum Template cadastrado
3 | WARNING_OVERWRITING_TEMPLATE | Template foi sobrescrito
-1 | ERROR_UNKNOWN | Erro desconhecido
-2 | ERROR_NO_DEVICE | Dispositivo não encontrado
-3 | ERROR_NULL_ARGUMENT | Argumento nulo
-4 | ERROR_INVALID_ARGUMENT | Argumento inválido
-5 | ERROR_CAPTURE | Erro durante a captura
-6 | ERROR_CAPTURE_TIMEOUT | Tempo de captura expirado
-7 | ERROR_COMM_USB | Erro de comunicação USB
-8 | ERROR_IO_ON_HOST | Erro de comunicação do Host
-9 | ERROR_TEMPLATE_ALREADY_ENROLLED | Template já cadastrado
-10 | ERROR_MERGING | Falha no Merge
-11 | ERROR_MATCHING | Falha no Match
-12 | ERROR_INVALID_FW_FILE | Arquivo de Firmware inválido
-13 | ERROR_NO_SPACE_LEFT_ON_DEVICE | Espaço no dispositivo esgotado
-14 | ERROR_NO_TEMPLATE_WITH_ID | Template não cadastrado
-15 | ERROR_INVALID_ERRNO | Código de erro inválido
-16 | ERROR_UNAVAILABLE_FEATURE | Funcionalidade não disponível
-17 | ERROR_PREVIOUS_FW_VERSION | Versão do firmware é anterior à atual
-18 | ERROR_NOT_IDENTIFIED | Template não identificado
-19 | ERROR_BUSY | Dispositivo esta ocupado
-20 | ERROR_CAPTURE_CANCELED | Captura foi cancelada
-21 | ERROR_NO_FINGER_DETECTED | Digital não foi detectada

## Inicialização e Finalização

public static RetCode SetSerialCommPort (string comPort)

Configura em qual porta o dispositivo deve se conectar.
Disponível a partir da versão da SDK: 1.4.0

Parâmetro de entrada:

- comPort: string
  Porta serial ao qual o dispositivo deve se conectar. Deve ser "COMx" em Windows e "/dev/ttyACMx" em Linux

public static RetCode Init ()

Checa e inicializa o dispositivo.

public static RetCode Terminate ()

Finaliza o dispositivo.

## Captura de dedo

public RetCode CaptureImage (out byte[] imageBuf, out uint width, out uint height)

Captura uma imagem de um dedo. Quando esta função é chamada o dispositivo entra no modo de captura de imagens. Esta função não retorna enquanto um dedo não for capturado, ou o tempo de captura for expirado (30 segundos).

Parâmetros de saída:

- imageBuf: byte[]
  Buffer com o conteúdo bitmap da imagem.
- width: uint
  Largura da imagem
- height: uint
  Altura da imagem

public RetCode CheckFingerprint (out byte[] imageBuf, out uint width, out uint height)

Checa se existe um dedo pressionando o leitor. Em caso positivo a imagem da digital é retornada, em caso negativo o erro ERROR_NO_FINGER_DETECTED é retornado. Esta função sempre retorna imediatamente.
Disponível a partir da versão do firmware: 1.2.0

Parâmetros de saída:

- imageBuf: byte[]
  Buffer com o conteúdo bitmap da imagem.
- width: uint
  Largura da imagem
- height: uint
  Altura da imagem

public RetCode CaptureImageAndTemplate (out string temp, out byte[] imageBuf, out uint width, out uint height, out int quality)

Captura uma imagem de um dedo e extrai o seu template. Quando esta função é chamada o dispositivo entra no modo de captura de imagens. Esta função não retorna enquanto um dedo não for capturado, ou o tempo de captura for expirado (30 segundos).

Parâmetros de saída:

- temp: string
  Base64 do template extraído.
- imageBuf: byte[]
  Buffer com o conteúdo bitmap da imagem.
- width: uint
  Largura da imagem
- height: uint
  Altura da imagem.
- quality: int
  Valor de 0 a 100 que define a qualidade da imagem do dedo capturado.

public RetCode CaptureAndEnroll (long id)

Captura 3 imagens de um dedo e o cadastra no dispositivo. Quando esta função é chamada o dispositivo entra no modo de captura de imagens. Esta função não retorna enquanto um dedo não for capturado 3 vezes, ou o tempo de captura for expirado (30 segundos por iteração).

Parâmetro de entrada:

- id: long
  Número identificador do template

public RetCode CaptureAndIdentify (out long id, out int score, out int quality)

Captura uma imagem de um dedo e tenta encontrar uma biometria semelhante cadastrada no dispositivo. Quando esta função é chamada o dispositivo entra no modo de captura de imagens. Esta função não retorna enquanto um dedo não for capturado, ou o tempo de captura for expirado (30 segundos).

Parâmetros de saída:

- id: long
  Número identificador do template encontrado.
- score: int
  Valor entre 0 e 20000 que define a semelhança entre o dedo capturado e o cadastrado.
- quality: int
  Valor de 0 a 100 que define a qualidade da imagem do dedo capturado.

public RetCode CaptureAndMatch (long id, int score, int quality)

Captura uma imagem de um dedo e verifica a semelhança com a biometria cadastrada com identificador id. Quando esta função é chamada o dispositivo entra no modo de captura de imagens. Esta função não retorna enquanto um dedo não for capturado, ou o tempo de captura for expirado (30 segundos).

Parâmetros de entrada:

- id: long
  Número identificador do template a ser comparado.

Parâmetros de saída:

- score: int
  Valor entre 0 e 20000 que define a semelhança entre o dedo capturado e o cadastrado.
- quality: int
  Valor de 0 a 100 que define a qualidade da imagem do dedo capturado.

public RetCode CancelCapture ()

Cancela a operação de captura atual.
Disponível a partir da versão do firmware: 1.2.0

## Gerenciar Templates

public RetCode ExtractTemplateFromImage (uint width, uint height, byte[] image, out string temp, out int quality)

Extrai o template de uma imagem.

Parâmetros de entrada:

- width: uint
  Largura da imagem
- height: uint
  Altura da imagem.
- imageBuf: byte[]
  Buffer com o conteúdo bitmap da imagem.

Parâmetros de saída:

- temp: string
  Base64 do template extraído.
- quality: int
  Valor de 0 a 100 que define a qualidade da imagem do dedo capturado.

public RetCode MergeTemplates (string temp1, string temp2, string temp3, out string tempFinal)

Mescla 3 templates em um único template. Templates devem pertencer ao mesmo dedo. (Formatos "ISO" e "ANSI" não são suportados para importação de templates)

Parâmetros de entrada:

- temp1: string
  Base64 do primeiro template.
- temp2: string
  Base64 do segundo template.
- temp3: string
  Base64 do terceiro template.

Parâmetros de saída:

- tempFinal: string Base64 do template mesclado.

public RetCode MatchTemplates (string temp1, string temp2, out int score)

Verifica se 2 templates são iguais. (Formatos "ISO" e "ANSI" não são suportados para importação de templates)

Parâmetros de entrada:

- temp1: string
  Base64 do primeiro template.
- temp2: string
  Base64 do segundo template.

Parâmetros de saída:

- score: int
  Valor entre 0 e 20000 que define a semelhança entre os 2 templates.

public RetCode MatchTemplateByID (long id, string temp, out int score)

Verifica se o template temp é igual ao template cadastrado com identificador id. (Formatos "ISO" e "ANSI" não são suportados para importação de templates)

Parâmetros de entrada:

- id: long
  identificador do template a ser verificado.
- temp: string
  Base64 do template.

Parâmetros de saída:

- score: int
  Valor entre 0 e 20000 que define a semelhança entre os 2 templates.

public RetCode GetTemplateIDs (out long[] ids)

Carrega os identificadores de todos templates cadastrados.

Parâmetros de saída:

- ids: long[]
  Identificadores de todos os templates cadastros no dispositivo.

public RetCode GetTemplate (long id, out string temp)

Carrega o template cadastrado com identificador id.

Parâmetros de entrada:

- id: long
  Identificador do templates cadastro no dispositivo.

Parâmetros de saída:

- temp: string
  Base64 do template.

public RetCode SaveTemplate (long id, string temp)

Salva o template temp com o identificador id. (Formatos "ISO" e "ANSI" não são suportados para importação de templates)

Parâmetros de entrada:

- id: long
  Identificador do templates cadastro no dispositivo.

- temp: string
  Base64 do template.

public RetCode DeleteTemplate (long id)

Deleta o template cadastrado com identificador id.

Parâmetros de entrada:

- id: long
  Identificador do templates cadastro no dispositivo.

public RetCode DeleteAllTemplates ()

Deleta todos os template cadastrados no dispositivo.

## Configuração do dispositivo

É possível alterar o comportamento do dispositivo atráves do enum ConfigParam.
Este enum é descrito pela tabela abaixo:

Valor | Define | Descrição
--- | --- | ---
1 | MIN_VAR | Variância mínima para captura de um dedo. (padrão: "1000")
2 | SIMILIARITY_THRESHOLD | Valor de 1 a 20000 que determina o valor mínimo para 2 templates serem considerados iguais. Valor 0 para automático (padrão)
4 | BUZZER_ON | "1" (padrão) ou "0" para ligar ou desligar o buzzer
5 | TEMPLATE_FORMAT | Configura o formato do template. Valores possíveis: "ICS": Formato proprietário (padrão) "ANSI": Formato ANSI (Somente para exportação de templates) "ISO": Formato ISO (Somente para exportação de templates) "ANSI_PLUS": Formato ANSI com informações proprietárias "ISO_PLUS": Formato ISO com informações proprietárias
6 | ROTATION | Rotação máxima aceita para que dois dedos sejam aceitos como iguais. Esta rotação é aplicada no sentido horário e anti-horário. Este parâmetro impacta na velocidade de identificação, quanto maior este valor, mais tempo a identificação demorará. Valor de 0 a 180 (padrão: "30")
7 | DETECT_TIMEOUT | Tempo, em milissegundos, de espera para detecção de um dedo. (padrão: "30000")

public RetCode SetParameter (ConfigParam config, string value)

Configura o parâmetro config com o valor value.

Parâmetros de entrada:

- config: ConfigParam
  Parâmetro a ser configurado
- value: string
  Valor a ser configurado.

public RetCode GetParameter (ConfigParam config, out string value)

Lê o valor do parâmetro config.

Parâmetros de entrada:

- config: ConfigParam
  Parâmetro a ser configurado

Parâmetros de saída:

- value: string
  Valor atual do parâmetro.

public RetCode GetDeviceInfo (out string version, out string serialNumber, out string model)

Lê as informações do dispositivo.

Parâmetros de saída:

- version: string
  Versão do firmware do dispositivo.
- serialNumber: string
  Número de série do dispositivo.
- model: string
  Modelo do dispositivo.

public RetCode UpdateFirmware (string filePath)

Atualiza o firmware do dispositivo com o arquivo em filePath. Este procedimento pode demorar alguns minutos. Por favor, não desconecte o dispositivo durante este período, pois isto pode danificar o dispositivo de forma permanente.
A última versão do fimware pode ser encontrada aqui.

Parâmetros de entrada:

- filePath: string
  Caminho completo para o arquivo contendo a atualização de firmware.

« Anterior