I made a C# software and connect the software with zkt device. All things are working perfectly. The software is configuring properly with machine.
But there is one problem which i tell you step by step with following scenario:
1. when both software and device are connected then data perfectly read and write.
2. When software is running and machine disconnected for some time, in this time the attendance entries read by machine and when connect to the software then entries automatically shown on software, which are enter during disconnection.
3. (Problem) when machine is running and for some reason software is disconnected or closed then during the disconnection machine get attendance in its log but software did not read. when software is run again then it is not showing missing record or record during disconnection.
Can any one help me.??? please
What I have tried:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Oracle.ManagedDataAccess.Client;
using System.Configuration;
using System.IO;
namespace AttendanceSystem
{
public partial class AttendanceInformation : Form
{
public zkemkeeper.CZKEM zkm = new zkemkeeper.CZKEM();
string connection = ConfigurationManager.ConnectionStrings["oracleDB"].ConnectionString;
OracleConnection conn;
private bool bIsConnected = false;
private int iMachineNumber = 1;
string path = @"C:\Users\daniyal\Desktop\Save Data.txt";
public AttendanceInformation()
{
InitializeComponent();
}
private void AttendanceInformation_Load(object sender, EventArgs e)
{
try
{
OnConnected();
string ip = File.ReadAllText(@"C:\Users\daniyal\Desktop\Machine Ip.txt");
txtIp.Text = ip.ToString();
txtIp.Enabled = false;
conn = new OracleConnection(connection);
if (txtIp.Text.Trim() == "" || txtPort.Text.Trim() == "")
{
MessageBox.Show("IP and Port cannot be null", "Error");
return;
}
int idwErrorCode = 0;
Cursor = Cursors.WaitCursor;
if (connectBtn.Text == "Disconnect")
{
zkm.Disconnect();
this.zkm.OnFinger -= new zkemkeeper._IZKEMEvents_OnFingerEventHandler(zkm_OnFinger);
this.zkm.OnVerify -= new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(zkm_OnVerify);
this.zkm.OnAttTransactionEx -= new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(zkm_OnAttTransactionEx);
this.zkm.OnFingerFeature -= new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(zkm_OnFingerFeature);
this.zkm.OnEnrollFingerEx -= new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(zkm_OnEnrollFingerEx);
this.zkm.OnDeleteTemplate -= new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(zkm_OnDeleteTemplate);
this.zkm.OnNewUser -= new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(zkm_OnNewUser);
this.zkm.OnHIDNum -= new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(zkm_OnHIDNum);
this.zkm.OnAlarm -= new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(zkm_OnAlarm);
this.zkm.OnDoor -= new zkemkeeper._IZKEMEvents_OnDoorEventHandler(zkm_OnDoor);
this.zkm.OnWriteCard -= new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(zkm_OnWriteCard);
this.zkm.OnEmptyCard -= new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(zkm_OnEmptyCard);
bIsConnected = false;
connectBtn.Text = "Connect";
lblState.Text = "Current State:DisConnected";
Cursor = Cursors.Default;
return;
}
bIsConnected = zkm.Connect_Net(txtIp.Text, Convert.ToInt32(txtPort.Text));
if (bIsConnected == true)
{
connectBtn.Text = "Disconnect";
connectBtn.Refresh();
lblState.Text = "Current State:Connected";
iMachineNumber = 1;
if (zkm.RegEvent(iMachineNumber, 65535))
{
this.zkm.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(zkm_OnFinger);
this.zkm.OnVerify += new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(zkm_OnVerify);
this.zkm.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(zkm_OnAttTransactionEx);
this.zkm.OnFingerFeature += new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(zkm_OnFingerFeature);
this.zkm.OnEnrollFingerEx += new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(zkm_OnEnrollFingerEx);
this.zkm.OnDeleteTemplate += new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(zkm_OnDeleteTemplate);
this.zkm.OnNewUser += new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(zkm_OnNewUser);
this.zkm.OnHIDNum += new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(zkm_OnHIDNum);
this.zkm.OnAlarm += new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(zkm_OnAlarm);
this.zkm.OnDoor += new zkemkeeper._IZKEMEvents_OnDoorEventHandler(zkm_OnDoor);
this.zkm.OnWriteCard += new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(zkm_OnWriteCard);
this.zkm.OnEmptyCard += new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(zkm_OnEmptyCard);
}
}
else
{
zkm.GetLastError(ref idwErrorCode);
MessageBox.Show("Unable to connect the device,ErrorCode=" + idwErrorCode.ToString(), "Error");
}
Cursor = Cursors.Default;
Timer t = new Timer();
t.Interval = 1000;
timer1.Enabled = true;
timer1.Tick += new System.EventHandler(timer2_Tick);
}
catch (Exception ex)
{
MessageBox.Show("Error Detail: "+ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
private void OnConnected()
{
StreamWriter write;
if (!File.Exists(path))
{
write = new StreamWriter(path);
write.WriteLine(DateTime.Now);
write.Close();
}
using (StreamReader read = File.OpenText(path))
{
if ((read.ReadLine()) == null)
{
read.Close();
write = new StreamWriter(path);
write.WriteLine(DateTime.Now);
write.Close();
}
}
string reader = File.ReadLines(path).Last();
ShowEvents.Items.Add(reader);
}
private void zkm_OnFinger()
{
ShowEvents.Items.Add("RTEvent OnFinger Has been Triggered");
}
private void zkm_OnVerify(int iUserID)
{
if (iUserID != -1)
{
ShowEvents.Items.Add("Verified OK,the UserID is " + iUserID.ToString());
}
else
{
ShowEvents.Items.Add("Verified Failed... ");
}
}
private void zkm_OnAttTransactionEx(string sEnrollNumber, int iIsInValid, int iAttState, int iVerifyMethod, int iYear, int iMonth, int iDay, int iHour, int iMinute, int iSecond, int iWorkCode)
{
ShowEvents.Items.Add("Verified OK");
ShowEvents.Items.Add("...UserID: " + sEnrollNumber);
ShowEvents.Items.Add("...Time: " + iYear.ToString() + "-" + iMonth.ToString() + "-" + iDay.ToString() + " " + iHour.ToString() + ":" + iMinute.ToString() + ":" + iSecond.ToString());
DateTime dt1 = new DateTime(Convert.ToInt16(iYear.ToString()), Convert.ToInt16(iMonth.ToString()), Convert.ToInt16(iDay.ToString()), Convert.ToInt16(iHour.ToString()), Convert.ToInt16(iMinute.ToString()), Convert.ToInt16(iSecond.ToString()));
string path = @"C:\Users\daniyal\Desktop\Save Data.txt";
StreamWriter write;
if (!File.Exists(path))
{
write = new StreamWriter(path);
write.WriteLine(DateTime.Now);
write.Close();
}
using (StreamReader read = File.OpenText(path))
{
if ((read.ReadLine()) == null)
{
read.Close();
write = new StreamWriter(path);
write.WriteLine(dt1);
write.Close();
}
}
string reader = File.ReadLines(path).Last();
DateTime dt2 = new DateTime(Convert.ToInt16(iYear.ToString()), Convert.ToInt16(iMonth.ToString()), Convert.ToInt16(iDay.ToString()), Convert.ToInt16(iHour.ToString()), Convert.ToInt16(iMinute.ToString()), Convert.ToInt16(iSecond.ToString()));
write = new StreamWriter(path);
write.WriteLine(dt2);
write.Close();
DateTime dt = Convert.ToDateTime(reader);
txtMachineId.Text = sEnrollNumber;
string date = dt.ToString("dd-MMM-yyyy");
conn.Open();
string query = "insert into attandance (user_id,in_date)values('" + txtMachineId.Text + "','" + date + "')";
OracleCommand cmd = new OracleCommand(query, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
private void zkm_OnFingerFeature(int iScore)
{
if (iScore < 0)
{
ShowEvents.Items.Add("The quality of your fingerprint is poor");
}
else
{
ShowEvents.Items.Add("RTEvent OnFingerFeature Has been Triggered...Score: " + iScore.ToString());
}
}
private void zkm_OnEnrollFingerEx(string sEnrollNumber, int iFingerIndex, int iActionResult, int iTemplateLength)
{
if (iActionResult == 0)
{
ShowEvents.Items.Add("RTEvent OnEnrollFigerEx Has been Triggered....");
ShowEvents.Items.Add(".....UserID: " + sEnrollNumber + " Index: " + iFingerIndex.ToString() + " tmpLen: " + iTemplateLength.ToString());
}
else
{
ShowEvents.Items.Add("RTEvent OnEnrollFigerEx Has been Triggered Error,actionResult=" + iActionResult.ToString());
}
}
private void zkm_OnDeleteTemplate(int iEnrollNumber, int iFingerIndex)
{
ShowEvents.Items.Add("RTEvent OnDeleteTemplate Has been Triggered...");
ShowEvents.Items.Add("...UserID=" + iEnrollNumber.ToString() + " FingerIndex=" + iFingerIndex.ToString());
}
private void zkm_OnNewUser(int iEnrollNumber)
{
ShowEvents.Items.Add("RTEvent OnNewUser Has been Triggered...");
ShowEvents.Items.Add("...NewUserID=" + iEnrollNumber.ToString());
}
private void zkm_OnHIDNum(int iCardNumber)
{
ShowEvents.Items.Add("RTEvent OnHIDNum Has been Triggered...");
ShowEvents.Items.Add("...Cardnumber=" + iCardNumber.ToString());
}
private void zkm_OnAlarm(int iAlarmType, int iEnrollNumber, int iVerified)
{
ShowEvents.Items.Add("RTEvnet OnAlarm Has been Triggered...");
ShowEvents.Items.Add("...AlarmType=" + iAlarmType.ToString());
ShowEvents.Items.Add("...EnrollNumber=" + iEnrollNumber.ToString());
ShowEvents.Items.Add("...Verified=" + iVerified.ToString());
}
private void zkm_OnDoor(int iEventType)
{
ShowEvents.Items.Add("RTEvent Ondoor Has been Triggered...");
ShowEvents.Items.Add("...EventType=" + iEventType.ToString());
}
private void zkm_OnEmptyCard(int iActionResult)
{
ShowEvents.Items.Add("RTEvent OnEmptyCard Has been Triggered...");
if (iActionResult == 0)
{
ShowEvents.Items.Add("...Empty Mifare Card OK");
}
else
{
ShowEvents.Items.Add("...Empty Failed");
}
}
private void zkm_OnWriteCard(int iEnrollNumber, int iActionResult, int iLength)
{
ShowEvents.Items.Add("RTEvent OnWriteCard Has been Triggered...");
if (iActionResult == 0)
{
ShowEvents.Items.Add("...Write Mifare Card OK");
ShowEvents.Items.Add("...EnrollNumber=" + iEnrollNumber.ToString());
ShowEvents.Items.Add("...TmpLength=" + iLength.ToString());
}
else
{
ShowEvents.Items.Add("...Write Failed");
}
}
private void connectBtn_Click(object sender, EventArgs e)
{
try
{
if (txtIp.Text.Trim() == "" || txtPort.Text.Trim() == "")
{
MessageBox.Show("IP and Port cannot be null", "Error");
return;
}
int idwErrorCode = 0;
Cursor = Cursors.WaitCursor;
if (connectBtn.Text == "Disconnect")
{
zkm.Disconnect();
this.zkm.OnFinger -= new zkemkeeper._IZKEMEvents_OnFingerEventHandler(zkm_OnFinger);
this.zkm.OnVerify -= new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(zkm_OnVerify);
this.zkm.OnAttTransactionEx -= new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(zkm_OnAttTransactionEx);
this.zkm.OnFingerFeature -= new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(zkm_OnFingerFeature);
this.zkm.OnEnrollFingerEx -= new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(zkm_OnEnrollFingerEx);
this.zkm.OnDeleteTemplate -= new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(zkm_OnDeleteTemplate);
this.zkm.OnNewUser -= new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(zkm_OnNewUser);
this.zkm.OnHIDNum -= new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(zkm_OnHIDNum);
this.zkm.OnAlarm -= new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(zkm_OnAlarm);
this.zkm.OnDoor -= new zkemkeeper._IZKEMEvents_OnDoorEventHandler(zkm_OnDoor);
this.zkm.OnWriteCard -= new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(zkm_OnWriteCard);
this.zkm.OnEmptyCard -= new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(zkm_OnEmptyCard);
bIsConnected = false;
connectBtn.Text = "Connect";
lblState.Text = "Current State:DisConnected";
Cursor = Cursors.Default;
return;
}
bIsConnected = zkm.Connect_Net(txtIp.Text, Convert.ToInt32(txtPort.Text));
if (bIsConnected == true)
{
connectBtn.Text = "Disconnect";
connectBtn.Refresh();
lblState.Text = "Current State:Connected";
iMachineNumber = 1;
if (zkm.RegEvent(iMachineNumber, 65535))
{
this.zkm.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(zkm_OnFinger);
this.zkm.OnVerify += new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(zkm_OnVerify);
this.zkm.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(zkm_OnAttTransactionEx);
this.zkm.OnFingerFeature += new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(zkm_OnFingerFeature);
this.zkm.OnEnrollFingerEx += new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(zkm_OnEnrollFingerEx);
this.zkm.OnDeleteTemplate += new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(zkm_OnDeleteTemplate);
this.zkm.OnNewUser += new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(zkm_OnNewUser);
this.zkm.OnHIDNum += new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(zkm_OnHIDNum);
this.zkm.OnAlarm += new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(zkm_OnAlarm);
this.zkm.OnDoor += new zkemkeeper._IZKEMEvents_OnDoorEventHandler(zkm_OnDoor);
this.zkm.OnWriteCard += new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(zkm_OnWriteCard);
this.zkm.OnEmptyCard += new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(zkm_OnEmptyCard);
}
}
else
{
zkm.GetLastError(ref idwErrorCode);
MessageBox.Show("Unable to connect the device,ErrorCode=" + idwErrorCode.ToString(), "Error");
}
Cursor = Cursors.Default;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
private void getDataBtn_Click(object sender, EventArgs e)
{
}
private void timer2_Tick(object sender, EventArgs e)
{
}
}
}