Как извлечь только новые данные из zkemkeeper, регистрируя события в реальном времени?
Мне нужно, когда любая запись посещаемости, сделанная на машине zk, может получить эту запись напрямую ?
я поискал больше в Интернете я нашел один способ называется регистрация события в реальном времени как показано ниже
Как использовать sta_RegRealTime для автоматического извлечения данных
мои ссылки
https://stackoverflow.com/questions/44258751/pull-only-the-new-data-from-biometric-device-zkemkeeper
Что я уже пробовал:
public int sta_RegRealTime(ListBox lblOutputInfo) { if (GetConnectState() == false) { lblOutputInfo.Items.Add("*Please connect first!"); return -1024; } int ret = 0; if (axCZKEM1.RegEvent(GetMachineNumber(), 65535))//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all) { //common interface this.axCZKEM1.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(axCZKEM1_OnFinger); this.axCZKEM1.OnVerify += new zkemkeeper._IZKEMEvents_OnVerifyEventHandler(axCZKEM1_OnVerify); this.axCZKEM1.OnFingerFeature += new zkemkeeper._IZKEMEvents_OnFingerFeatureEventHandler(axCZKEM1_OnFingerFeature); this.axCZKEM1.OnDeleteTemplate += new zkemkeeper._IZKEMEvents_OnDeleteTemplateEventHandler(axCZKEM1_OnDeleteTemplate); this.axCZKEM1.OnNewUser += new zkemkeeper._IZKEMEvents_OnNewUserEventHandler(axCZKEM1_OnNewUser); this.axCZKEM1.OnHIDNum += new zkemkeeper._IZKEMEvents_OnHIDNumEventHandler(axCZKEM1_OnHIDNum); this.axCZKEM1.OnAlarm += new zkemkeeper._IZKEMEvents_OnAlarmEventHandler(axCZKEM1_OnAlarm); this.axCZKEM1.OnDoor += new zkemkeeper._IZKEMEvents_OnDoorEventHandler(axCZKEM1_OnDoor); //only for color device this.axCZKEM1.OnAttTransactionEx += new zkemkeeper._IZKEMEvents_OnAttTransactionExEventHandler(axCZKEM1_OnAttTransactionEx); this.axCZKEM1.OnEnrollFingerEx += new zkemkeeper._IZKEMEvents_OnEnrollFingerExEventHandler(axCZKEM1_OnEnrollFingerEx); //only for black&white device this.axCZKEM1.OnAttTransaction -= new zkemkeeper._IZKEMEvents_OnAttTransactionEventHandler(axCZKEM1_OnAttTransaction); this.axCZKEM1.OnWriteCard += new zkemkeeper._IZKEMEvents_OnWriteCardEventHandler(axCZKEM1_OnWriteCard); this.axCZKEM1.OnEmptyCard += new zkemkeeper._IZKEMEvents_OnEmptyCardEventHandler(axCZKEM1_OnEmptyCard); this.axCZKEM1.OnKeyPress += new zkemkeeper._IZKEMEvents_OnKeyPressEventHandler(axCZKEM1_OnKeyPress); this.axCZKEM1.OnEnrollFinger += new zkemkeeper._IZKEMEvents_OnEnrollFingerEventHandler(axCZKEM1_OnEnrollFinger); ret = 1; } else { axCZKEM1.GetLastError(ref idwErrorCode); ret = idwErrorCode; if (idwErrorCode != 0) { lblOutputInfo.Items.Add("*RegEvent failed,ErrorCode: " + idwErrorCode.ToString()); } else { lblOutputInfo.Items.Add("*No data from terminal returns!"); } } return ret; } and their definitions: //If your fingerprint(or your card) passes the verification,this event will be triggered,only for color device void axCZKEM1_OnAttTransactionEx(string EnrollNumber, int IsInValid, int AttState, int VerifyMethod, int Year, int Month, int Day, int Hour, int Minute, int Second, int WorkCode) { string time = Year + "-" + Month + "-" + Day + " " + Hour + ":" + Minute + ":" + Second; gRealEventListBox.Items.Add("Verify OK.UserID=" + EnrollNumber + " isInvalid=" + IsInValid.ToString() + " state=" + AttState.ToString() + " verifystyle=" + VerifyMethod.ToString() + " time=" + time); throw new NotImplementedException(); } //If your fingerprint(or your card) passes the verification,this event will be triggered,only for black%white device private void axCZKEM1_OnAttTransaction(int EnrollNumber, int IsInValid, int AttState, int VerifyMethod, int Year, int Month, int Day, int Hour, int Minute, int Second) { string time = Year + "-" + Month + "-" + Day + " " + Hour + ":" + Minute + ":" + Second; gRealEventListBox.Items.Add("Verify OK.UserID=" + EnrollNumber.ToString() + " isInvalid=" + IsInValid.ToString() + " state=" + AttState.ToString() + " verifystyle=" + VerifyMethod.ToString() + " time=" + time); throw new NotImplementedException(); } //After you have placed your finger on the sensor(or swipe your card to the device),this event will be triggered. //If you passes the verification,the returned value userid will be the user enrollnumber,or else the value will be -1; void axCZKEM1_OnVerify(int UserID) { if (UserID != -1) { gRealEventListBox.Items.Add("User fingerprint verified... UserID=" + UserID.ToString()); } else { gRealEventListBox.Items.Add("Failed to verify... "); } throw new NotImplementedException(); }
Gerry Schmitz
И что же? Кое-что из этого работает ... ничего из этого не работает ... Что?