DigitalPersona到Griaule(GrFingerX)或Vice Versa

时间:2019-03-08 06:37:41

标签: c# sdk vb6 digital-persona-sdk

任务:我在一个SQL Server数据库中拥有30,000个指纹记录,该数据库是binary(2000)数据类型,并且在使用DigitalPersona SDK之前已经注册。

我正在使用Griaule(GrFinger)SDK用C#开发应用程序。我使用Griaule SDK是因为5年前我已经使用VB6开发了一个应用程序,但是我没有任何问题,可以使用1:N来加快获取数据的速度,但是现在我不知道如何比较或转换模板使用GrFinger进行DigitalPersona记录。我是C#的新手,所以我希望您能理解C#。

我该如何解决这个问题?

屏幕截图

Screenshot

代码

    public int Identify(ref int score, string sqlQuery)
    {
        GRConstants result;
        int id;
        OleDbDataReader rs;
        TTemplate tptRef;
        // Checking if template is valid.
        if (!TemplateIsValid()) return ERR_INVALID_TEMPLATE;
        // Starting identification process and supplying query template.
        result = (GRConstants)_grfingerx.IdentifyPrepare(ref _tpt._tpt,(int)GRConstants.GR_DEFAULT_CONTEXT);
        // error?
        if (result < 0) return (int)result;
        // Getting enrolled templates from database.
        rs = _DB.getTemplates(sqlQuery);// query source is "select EmployeeFingerPrint,EmployeeID from RegFingers"
        while (rs.Read())
        {
            // Getting current template from recordset.
            tptRef = _DB.getTemplate(rs);
            // Comparing current template.
            result = (GRConstants)_grfingerx.Identify(ref tptRef._tpt,ref score, (int)GRConstants.GR_DEFAULT_CONTEXT);
            // Checking if query template and the reference template match.
            if (result == GRConstants.GR_MATCH)
            {
                id = _DB.getId(rs);
                rs.Close();
                return id;
            }
            else if (result < 0)
            {
                rs.Close();
                return (int)result;
            }
        }
        // Closing recordset.
        rs.Close();
        return (int)GRConstants.GR_NOT_MATCH;
    }
   // Returns an OleDbDataReader with all enrolled templates from database.
    public OleDbDataReader getTemplates(string sqlQuery)
    {
        OleDbCommand cmdGetTemplates;
        OleDbDataReader rs;
        //setting up command
        cmdGetTemplates = new OleDbCommand(sqlQuery, _connection);
        rs = cmdGetTemplates.ExecuteReader();
        return rs;
    }
    // Return template data from an OleDbDataReader
    public TTemplate getTemplate(OleDbDataReader rs)
    {
        long readedBytes;
        tptBlob._size = 0;
        Byte[] temp = new Byte[(int)GRConstants.GR_MAX_SIZE_TEMPLATE];// alloc space
        readedBytes = rs.GetBytes(0, 0, temp, 0, (int)temp.Length);// get bytes
        Array.Copy(temp, 0, tptBlob._tpt, 0, (int)readedBytes);// copy to structure
        tptBlob._size = (int)readedBytes;// set real size
        return tptBlob;
    }

0 个答案:

没有答案