지문인식기 이닛

initCommPort(String port, {int baundrate = 115200, bool asciiMode = false})

typedef _InitCommPortFunc = Int32 Function(
    Pointer<Utf8> commPort, Int baudrate, Bool asciiMode);
typedef _InitCommPort = int Function(
    Pointer<Utf8> commPort, int baudrate, bool asciiMode);

Future<String> initCommPort(String port,
  // UfRetCode initCommPort(String port,
      {int baudrate = 115200, bool asciiMode = false}) async {
    // 라이브러리 열기
    _dylib = DynamicLibrary.open('SFM_SDK.dll');

    final _InitCommPort initCommPort = _dylib
        .lookupFunction<_InitCommPortFunc, _InitCommPort>('UF_InitCommPort');

    closeCommPort();

    int res = initCommPort(port.toNativeUtf8(), baudrate, asciiMode);
    loadDB();

    return UfRetCode.find(res).toString();
  }

포트 닫기

closeCommPort()

typedef _CloseCommPortFunc = Int32 Function();
typedef _CloseCommPort = int Function();

UfRetCode closeCommPort() {

_dylib = DynamicLibrary.open('SFM_SDK.dll');
    final _CloseCommPort closeCommPort = _dylib
        .lookupFunction<_CloseCommPortFunc, _CloseCommPort>('UF_CloseCommPort');

    return UfRetCode.find(closeCommPort());
  }

디비 저장, 불러오기

saveDB() loadDB()

typedef _SaveDBFunc = Int32 Function(Pointer<Utf8> fileName);
typedef _SaveDB = int Function(Pointer<Utf8> fileName);

UfRetCode saveDB() {

_dylib = DynamicLibrary.open('SFM_SDK.dll');
    final _SaveDB saveDB = _dylib
        .lookupFunction<_SaveDBFunc, _SaveDB>('UF_SaveDB');

    String fileName = 'zelotec_finger_print_data.db';
    final backwardsUtf8 = fileName.toNativeUtf8();
    int res = saveDB(backwardsUtf8);

    return UfRetCode.find(res);
  }

fileName에 정해진 이름으로 파일 저장 같은 이름일때는 덮어쓰기

typedef _LoadDBFunc = Int32 Function(Pointer<Utf8> fileName);
typedef _LoadDB = int Function(Pointer<Utf8> fileName);

UfRetCode loadDB() {
_dylib = DynamicLibrary.open('SFM_SDK.dll');
    final _LoadDB loadDB = _dylib
        .lookupFunction<_LoadDBFunc, _LoadDB>('UF_LoadDB');

    String fileName = 'zelotec_finger_print_data.db';
    final backwardsUtf8 = fileName.toNativeUtf8();
    int res = loadDB(backwardsUtf8);

    return UfRetCode.find(res);
  }

fileName에 정해진 이름으로 디비 적용

지문 남아있는 최대 공간 확인

getMaxCapacity()

typedef _MaxCapacityFunc = Int32 Function(Pointer<Int32> maxNo);
typedef _MaxCapacity = int Function(Pointer<Int32> maxNo);

UfRetCode getMaxCapacity() {
    _dylib = DynamicLibrary.open('SFM_SDK.dll');
    final _MaxCapacity maxCapacity = _dylib
        .lookupFunction<_MaxCapacityFunc, _MaxCapacity>('UF_GetMaxNumOfTemplate');

    var maxNo = calloc<Int32>();
    int res = maxCapacity(maxNo);

    print('maxNo id: ${maxNo.value}');

    return UfRetCode.find(res);
  }

설정 가져오기