public void StartListen() { int returnCode; returnCode = ZRIntf.ZR_Initialize(ZPIntf.ZP_IF_NO_MSG_LOOP); if (returnCode < 0) { throw new Exception("ZLib initialization error"); } ZR_RD_OPEN_PARAMS openParams = new ZR_RD_OPEN_PARAMS(this.portType, this.portName); ZR_RD_INFO readerInfo = new ZR_RD_INFO(); returnCode = ZRIntf.ZR_Rd_Open(ref reader, ref openParams, readerInfo); if (returnCode < 0) { throw new Exception("Reader open error"); } ZR_RD_NOTIFY_SETTINGS notifySettings = new ZR_RD_NOTIFY_SETTINGS(ZRIntf.ZR_RNF_PLACE_CARD, this.placeCardCallback); returnCode = ZRIntf.ZR_Rd_SetNotification(reader, notifySettings); if (returnCode < 0) { throw new Exception("Callback setup error"); } }
public void StopListen() { if (reader != IntPtr.Zero) { ZRIntf.ZR_CloseHandle(reader); } ZRIntf.ZR_Finalyze(); }
bool CardDetectCallback(UInt32 nMsg, IntPtr nMsgParam, IntPtr pUserData) { if (nMsg == ZRIntf.ZR_RN_CARD_INSERT) { ZR_CARD_INFO pInfo = (ZR_CARD_INFO)Marshal.PtrToStructure(nMsgParam, typeof(ZR_CARD_INFO)); string cardNum = ZRIntf.CardNumToStr(pInfo.nNum, pInfo.nType); Log.Write("Card was readed: " + cardNum); foreach (UserContext client in this.clientsPool.Values) { client.Send(cardNum); } } return(true); }