private string getcardUID() //only for mifare 1k cards { string cardUID = ""; byte[] receivedUID = new byte[256]; Card.SCARD_IO_REQUEST request = new Card.SCARD_IO_REQUEST(); request.dwProtocol = Card.SCARD_PROTOCOL_T1; request.cbPciLength = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Card.SCARD_IO_REQUEST)); byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x00 }; //get UID command for Mifare cards int outBytes = receivedUID.Length; int status = Card.SCardTransmit(hCard, ref request, ref sendBytes[0], sendBytes.Length, ref request, ref receivedUID[0], ref outBytes); if (status != Card.SCARD_S_SUCCESS) { cardUID = "Error"; string msg = "Error get UID"; printMessage(2, msg); } else { cardUID = BitConverter.ToString(receivedUID.Take(4).ToArray()).Replace("-", string.Empty).ToLower(); } return(cardUID); }
public string GetCardUID() { string cardUID = ""; byte[] receivedUID = new byte[256]; Card.SCARD_IO_REQUEST request = new Card.SCARD_IO_REQUEST(); request.dwProtocol = Card.SCARD_PROTOCOL_T1; request.cbPciLength = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Card.SCARD_IO_REQUEST)); byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x00 }; int outBytes = receivedUID.Length; int status = Card.SCardTransmit(hCard, ref request, ref sendBytes[0], sendBytes.Length, ref request, ref receivedUID[0], ref outBytes); if (status != Card.SCARD_S_SUCCESS) { cardUID = ""; } else { cardUID = BitConverter.ToString(receivedUID.Take(4).ToArray()).Replace("-", string.Empty).ToLower(); } return(cardUID); }
private void WaitChangeStatus(object sender, DoWorkEventArgs e) { while (!e.Cancel) { int result; lock (this) { if (!this._contextState) { return; } result = Card.SCardGetStatusChange(this._context, 1000, ref this._state, this._readerCount); //Console.WriteLine(this._state.RdrEventState); //Console.WriteLine(Card.SCARD_STATE_CHANGED); string cardUID = ""; byte[] receivedUID = new byte[256]; Card.SCARD_IO_REQUEST request = new Card.SCARD_IO_REQUEST(); request.dwProtocol = Card.SCARD_PROTOCOL_T1; request.cbPciLength = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Card.SCARD_IO_REQUEST)); byte[] sendBytes = new byte[] { 0xFF, 0xCA, 0x00, 0x00, 0x00 }; //get UID command for Mifare cards int outBytes = receivedUID.Length; int status = Card.SCardTransmit(this._context, ref request, ref sendBytes[0], sendBytes.Length, ref request, ref receivedUID[0], ref outBytes); if (status != Card.SCARD_S_SUCCESS) { cardUID = "Error"; } else { cardUID = BitConverter.ToString(receivedUID.Take(4).ToArray()).Replace("-", string.Empty).ToLower(); } Console.WriteLine(cardUID); } if (result == Card.SCARD_E_TIMEOUT) { continue; } if ((this._state.RdrEventState & Card.SCARD_STATE_CHANGED) == Card.SCARD_STATE_CHANGED) { int state = 0; if ((this._state.RdrEventState & Card.SCARD_STATE_PRESENT) == Card.SCARD_STATE_PRESENT && (this._state.RdrEventState & Card.SCARD_STATE_PRESENT) != Card.SCARD_STATE_PRESENT) { state = 1; } else if ((this._state.RdrEventState & Card.SCARD_STATE_EMPTY) == Card.SCARD_STATE_EMPTY && (this._state.RdrEventState & Card.SCARD_STATE_EMPTY) != Card.SCARD_STATE_EMPTY) { state = 2; } if (state != 0 && this._state.RdrCurrState != 0) { switch (state) { case 1: { MessageBox.Show("Card inserted"); break; } case 2: { MessageBox.Show("Card ejected"); break; } default: { MessageBox.Show("Some other state..."); break; } } } this._state.RdrCurrState = this._state.RdrEventState; } } }