private async void NfcService_OnNfcTagRead(object sender, NfcTagInfo e) { nfcService.StopReadingTag(); btnRead.IsEnabled = true; Device.BeginInvokeOnMainThread(() => lbState.Text = "NFC card read"); await ShowNfcMessage(e.Records.FirstOrDefault()); }
private void ManageReadOperation() { //TODO 2. READING CARD 5 NfcTagInfo nTag = GetNfcTagInfo(currentTag); OnNfcTagRead?.Invoke(this, nTag); currentIntent = null; }
public void start() { g_TagCB.onTagArrival = (IntPtr unmanagedAddr) => { NfcTagInfo g_tagInfos = new NfcTagInfo(); g_tagInfos = (NfcTagInfo)Marshal.PtrToStructure(unmanagedAddr, typeof(NfcTagInfo)); byte[] uidArray = new byte[g_tagInfos.uid_length]; for (int i = 0; i < g_tagInfos.uid_length; i++) { uidArray[i] = g_tagInfos.uid[i]; } string uidString = BitConverter.ToString(uidArray).Replace("-", ""); Console.WriteLine("Tag arrived! ID: {0}", uidString); if (readerMode == READER_MODE_IDLE) { if (!findUser(uidString)) { Console.WriteLine("Cannot find user"); createAccessRequest(uidString, false); } else { Console.WriteLine("User found!"); createAccessRequest(uidString, true); } } else if (readerMode == READER_MODE_WRITE_KEY) { if (!createUser(uidString)) { Console.WriteLine("Cannot create user"); } else { Console.WriteLine("User created!"); } } }; g_TagCB.onTagDeparture = () => { Console.WriteLine("Tag departed!"); }; IntPtr unmanagedAddr = Marshal.AllocHGlobal(Marshal.SizeOf(g_TagCB)); Marshal.StructureToPtr(g_TagCB, unmanagedAddr, true); nfcManager_doInitialize(); nfcManager_registerTagCallback(unmanagedAddr); nfcManager_enableDiscovery(-1, 0x01, 0, 0); Console.Write("NFC poll started!\n"); }
private void OnNdefRed(NFCNdefMessage message, NSError error) { if (message == null) { OnNfcTagRead?.Invoke(this, null); return; } NfcTagInfo tagInfo = new NfcTagInfo(); tagInfo.Records = GetRecords(message.Records); OnNfcTagRead?.Invoke(this, tagInfo); }
private NfcTagInfo GetNfcTagInfo(Tag tag) { if (tag == null) { return(null); } Ndef ndef = Ndef.Get(tag); NfcTagInfo nTag = new NfcTagInfo(); if (ndef != null) { if (ndef.CachedNdefMessage != null) { NdefMessage ndefMessage = ndef.CachedNdefMessage; //TODO 2. READING CARD 6 ndef.NdefMessage -> TagLost var records = ndefMessage.GetRecords(); nTag.Records = GetRecords(records); } } return(nTag); }