0% found this document useful (0 votes)
423 views5 pages

Interface With ZKTeco

Interface With ZKTeco

Uploaded by

Anwar Ay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
423 views5 pages

Interface With ZKTeco

Interface With ZKTeco

Uploaded by

Anwar Ay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

C# ZKTeco Biometric Device Getting Started - CodeProject https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometr...

Articles » Languages » C# » General

C# ZKTeco Biometric Device Getting Started


Ozesh Thapa, 17 Jun 2016

An implementation of a Zkteco (K14) Biometric Device using C#

Download BioMatrix Source Code.zip - 551.8 KB


Download Programmers_Guide_Manual.zip - 289.4 KB
Download The SDK.zip - 1.4 MB

Introduction
There are requirements where you have to integrate a biometric device into your own application or some part of it like fetching the
attendance records, user information , backing up the fingerprint templates into your system database or export it somewhere remotely etc.

For that very purpose, this article is written as a getting started guide with a few pieces of source code such that it helps C# developers to
save some valuable time with all the troublesome work.

Note: Though, the devices will be of various models, with a different set of sdk, the implementation procedure will be somewhat the same.

The following article contains some useful old pieces of code, if you ever get your hands on a biometric device (fingerprint reader for Time &
Attendance) and want to extract gold(data) out of it.

Implemented Device Specification

Device Name : K14


Firmware Ver : ver. 4.0.1 ( build 39 )
Vendor : ZKTeco Inc.
FP : 500
Records : 50000
 
Prior to going through the following article, it would be beneficial if you have some good understanding of the following things:

How a biometric device works, its features and functionalities


How to Register/ Unregister dll`s using the Regsvr32 utility
Knowledge about how the ref and out parameters work

The article and the source code provided will help you with the following things

Registering the sdk components


Ping the device
Connecting to the device
Extracting some random data out of the device ( Log Data, User Info etc)
Source Code to Upload data to the device
Restarting the device

1 of 5 11/4/2018, 9:05 PM
C# ZKTeco Biometric Device Getting Started - CodeProject https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometr...

How to register to device specific events [ Not Implemented/ You will have to implement it yourself per you need ]

Background
Biometric Devices are being used extensively in many corporations through out the world these days. Companies like ZKTeco manufacture
biometric access control and Time and Attendance in various shapes and sizes with different set of featues per model. They provide a better
way of user authentication and security in organizations who implement it. It is a growing demand in todays world. Hence, Developers are
likely to come across its implementation at some point.

Using the code


Note: The follow procedures are applicable for the K14 model devices. Other devices might have a different set of SDK, hence a slightly
different set of procedures.

In order to implement any biometric device, you will have to register the related components in the system, which can be easily done by using
the Regsvr32 utility. If you dont know how it works, please go through some blog posts in the related topic. We already have a batch file
ready for that very purpose, Hence, we are cool here.

You can download the SDK from here. I have already attached an SDK sample along with this article. You can go through the source code
inside the Register_SDK.bat to see the registration mechanism.

Registering the components

1. Fire up a Command Prompt with Administrator Privelage


2. Navigate to the SDK location
3. Execute the Register_SDK batch file

On Successful Registration :

To implement the biometric device , you will have to use the zkemkeeper.dll

Implementing the sdk

1. Add Reference to the zkemkeeper.dll in a project. The dll gives access to the following things.
2. Create a class file and implement the IZKEM interface.
3. Use the CZKEM class file to perform device related operations.

Lets say your Biometric device is connected in the local area network. To make a successfull communication with the device, you need to know
the IP address and the Port No.

IP address : Assign a static IP in the device itself


Default Port : 4370
Machine No : 1
 
Now we have a valid IP and Port, lets go through the source code used in a demo project entitled BioMetrix  which i have attached along
with this article. The application helps by showing some of the API implementations.
 
The ZKenClient.cs file implements the IZKEM interface which contains the following code.
 
Connecting to the device
The following code helps connect to the device at the given IPAddress and Port and on successfull connection, it registers some events
(The events are not implemented though, you will have to implement it yourself as per your need ).

2 of 5 11/4/2018, 9:05 PM
C# ZKTeco Biometric Device Getting Started - CodeProject https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometr...

public bool Connect_Net(string IPAdd, int Port)


{
if (objCZKEM.Connect_Net(IPAdd, Port))
{
if (objCZKEM.RegEvent(1, 65535))
{
objCZKEM.OnConnected += ObjCZKEM_OnConnected;
objCZKEM.OnDisConnected += objCZKEM_OnDisConnected;
objCZKEM.OnEnrollFinger += ObjCZKEM_OnEnrollFinger;
objCZKEM.OnFinger += ObjCZKEM_OnFinger;
objCZKEM.OnAttTransactionEx += new
_IZKEMEvents_OnAttTransactionExEventHandler(zkemClient_OnAttTransactionEx);
}
return true;
}
return false;
}

Registering Events

To fire any event when something occurs in the device, we need to register the event

bool RegEvent(int dwMachineNumber, int EventMask);


// Entering 65535 for the EventMast value registers for all events

The EventMask requires an integer value whose value varies  based on the type of event. The complete list of EventMast values are given
below

1                           OnAttTransaction, OnAttTransactionEx


2 (1<<1)               OnFinger
4 (1<<2)               OnNewUser
8 (1<<3)               OnEnrollFinger
16 (1<<4)             OnKeyPress
256 (1<<7)           OnVerify
512 (1<<8)           OnFingerFeature
1024 (1<<9)         OnDoor, OnAlarm
2048 (1<<10)       OnHIDNum
4096 (1<<11)       OnWriteCard
8192 (1<<12)       OnEmptyCard
16384 (1<<13)     OnDeleteTemplate
 
To register for multiple-events, we can perform XOR operations between binary codes of related events.
To register all real-time events, the value of Eventmast can be set as 65535 which i have implemented in the above code.
 
Fetching User Info
The user information can be fetched by providing the machine number. The API implements the out parameter to give back the output.  I had
stored some random user data in the fingerprint device and used the following code to retrieve it back and display it. The TmpData is the
users (fingerprint) template data.

public ICollection<UserInfo> GetAllUserInfo(ZkemClient objZkeeper, int machineNumber)


{
string sdwEnrollNumber = string.Empty, sName = string.Empty, sPassword = string.Empty, sTmpData =
string.Empty;
int iPrivilege = 0, iTmpLength = 0, iFlag = 0, idwFingerIndex;
bool bEnabled = false;

ICollection<UserInfo> lstFPTemplates = new List<UserInfo>();


objZkeeper.ReadAllUserID(machineNumber);
objZkeeper.ReadAllTemplate(machineNumber);

while (objZkeeper.SSR_GetAllUserInfo(machineNumber, out sdwEnrollNumber, out sName, out sPassword, out


iPrivilege, out bEnabled))
{
for (idwFingerIndex = 0; idwFingerIndex < 10; idwFingerIndex++)
{
if (objZkeeper.GetUserTmpExStr(machineNumber, sdwEnrollNumber, idwFingerIndex, out iFlag, out

3 of 5 11/4/2018, 9:05 PM
C# ZKTeco Biometric Device Getting Started - CodeProject https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometr...

sTmpData, out iTmpLength))


{
UserInfo fpInfo = new UserInfo();
fpInfo.MachineNumber = machineNumber;
fpInfo.EnrollNumber = sdwEnrollNumber;
fpInfo.Name = sName;
fpInfo.FingerIndex = idwFingerIndex;
fpInfo.TmpData = sTmpData;
fpInfo.Privelage = iPrivilege;
fpInfo.Password = sPassword;
fpInfo.Enabled = bEnabled;
fpInfo.iFlag = iFlag.ToString();

lstFPTemplates.Add(fpInfo);
}
}
}
return lstFPTemplates;
}

Result:

Conclusion
Well, that gives you the starting point for your project. With a biometric device in hand, you can now experiment with the source code
yourself and play along.

There are numberous procedures and events to be implemented which you can use per you need. Also, you might want to take help from the
SDK that i have attached along with this article. There are other SDK/manuals which you can find online for more detailed implementation.

Feel free for any queries and feedbacks.

Peace !!

License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

4 of 5 11/4/2018, 9:05 PM
C# ZKTeco Biometric Device Getting Started - CodeProject https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometr...

Ozesh Thapa
Software Developer Braindigit IT Solution
Nepal

I am a Software Engineer and a developer by profession.

The following things describes me:


1. I am a real time/run time developer : Basically learn and implement things on the fly.
2. Definitely not a technology racist : Love to work and explore any technology that i come across.
3. Prefer Beer over H2O : Code with passion and for fun

I am interested in Research & Development based tasks, exploring, experimenting and trying out
new things.
Technologies i have been using up until now are C#, ASP.NET, Win Services, Web Services, Restful
Web API, Windows Application, Windows Phone Application, Store Apps, couple of JavaScript
frameworks, Xamarin Forms, NodeJS, React, ReactNative, AngularJS, SQL Server, MongoDB, Postgres
etc.

Comments and Discussions


119 messages have been posted for this article Visit https://www.codeproject.com/Articles/1104538/Csharp-ZKTeco-Biometric-
Device-Getting-Started to post and view comments on this article, or click here to get a print view with messages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile Article Copyright 2016 by Ozesh Thapa
Web04-2016 | 2.8.180920.1 | Last Updated 17 Jun 2016 Everything else Copyright © CodeProject, 1999-2018

5 of 5 11/4/2018, 9:05 PM

You might also like