Я разрабатываю проект на C #, для которого я хочу войти / аутентифицировать пользователя, используя его отпечаток пальца.
Я купил сканер отпечатков пальцев ZK4500 и получил его SDK от http://www.zkteco.com/product/ZK4500_238.html. SDK находится в C ++.
Итак, как я могу интегрировать этот SDK с моим проектом C # для выполнения желаемой функциональности?
Вам необходимо добавить ссылку на ZKFPEngXControl, который появится в разделе «Библиотеки типов COM». После этого вы можете использовать класс ZKFPEngX, чтобы делать все, что вам нужно.
using ZKFPEngXControl;
а потом
ZKFPEngX fp = new ZKFPEngX();
fp.SensorIndex = 0;
fp.InitEngine(); // Do validation as well as it returns an integer (0 for success, else error code 1-3)
//subscribe to event for getting when user places his/her finger
fp.OnImageReceived += new IZKFPEngXEvents_OnImageReceivedEventHandler(fp_OnImageReceived);
Вы можете написать свой собственный метод fp_OnImageReceived для обработки события. например, вы можете написать это в этом методе;
object imgdata = new object();
bool b = fp.GetFingerImage(ref imgdata);
Где imgdata — это массив байтов. Вы также можете использовать другие методы в ZKFPEngX для достижения своих целей. Не забудьте закрыть двигатель, когда форма закрывается.
fp.EndEngine();
Вы можете хранить отпечаток под OnEnroll(bool ActionResult, object ATemplate)
Событие. Это событие будет вызвано, когда BeginEnroll()
был выполнен
//Add an event handler on OnEnroll Event
ZKFPEngX x = new ZKFPEngX();
x.OnEnroll += X_OnEnroll;private void X_OnEnroll(bool ActionResult, object ATemplate)
{
if (ActionResult)
{
if (x.LastQuality >= 80) //to ensure the fingerprint quality
{
string regTemplate = x.GetTemplateAsStringEx("9");
File.WriteAllText(Application.StartupPath + "\\fingerprint.txt", regTemplate);
}
else
{
//Quality is too low
}
}
else
{
//Register Failed
}
}
Вы можете попробовать проверить отпечатки пальцев под OnCapture(bool ActionResult, object ATemplate)
событие. Это событие вызывается, когда на сканер помещается палец.
Добавьте обработчик события OnCapture Event:
x.OnCapture += X_OnCapture;
Проверьте отпечатки пальцев, когда событие было вызвано (палец помещен в сканер):
private void X_OnCapture(bool ActionResult, object ATemplate)
{
if (ActionResult) //if fingerprint is captured successfully
{
bool ARegFeatureChanged = true;
string regTemplate = File.ReadAllText(Application.StartupPath + "\\fingerprint.txt");
string verTemplate = x.GetTemplateAsString();
bool result = x.VerFingerFromStr(regTemplate , verTemplate, false, ARegFeatureChanged);
if (result)
{
//matched
}
else
{
//not matched
}
}
else
{
//failed to capture a valid fingerprint
}
}