private void OnWriteClick(object sender, RoutedEventArgs e) { SerializeConfig(); NdefMessage message = new NdefMessage(); Payload payload; if (tabNdefData.SelectedIndex == (int)Tab.Text) { payload = new TextPayload("en", textTextData.Text, false); } else { payload = new UriPayload((UriPrefix)comboUriData.SelectedIndex, textUriData.Text); } message.AddRecord(new NdefRecord(payload)); controller.WriteNdefMessage(readerList[0], message, (byte)config.UserMemoryPage, (byte)config.UpdateMemorySize); }
public MainWindow() { InitializeComponent(); // Global.UseSyncContextPost = true; DeserializeConfig(); controller.OnConnected += (success, readers) => { if (success) { AddLog("Success Connected."); } else { AddLog("Success Failured."); } foreach (var reader in readers) { AddLog(reader.Name); } readerList = readers; AddLog("-------"); }; controller.OnDisconnected += () => { readerList = null; AddLog("Disconnected."); AddLog("-------"); }; Reader targetReader = null; controller.OnEnterCard += (card, r) => { AddLog("Enter:" + card.Id + ":" + card.Type + " on " + r.Name + " : " + r.SerialNumber); if (targetReader == null) { labelIDm.Content = card.Id; labelType.Content = card.Type; buttonRead.IsEnabled = true; buttonWrite.IsEnabled = true; buttonSend.IsEnabled = true; targetReader = r; } AddLog("-------"); return(Disposition.Leave); }; controller.OnLeaveCard += (card, r) => { if (card != null) { AddLog("Leave:" + card.Id + " on " + r.Name + " : " + r.SerialNumber); } if (targetReader == r) { labelIDm.Content = ""; labelType.Content = ""; buttonRead.IsEnabled = false; buttonWrite.IsEnabled = false; buttonSend.IsEnabled = false; targetReader = null; } AddLog("-------"); }; controller.OnAPDUCommand += (success, reader, command, data) => { if (success != ExecStatus.Error) { AddLog("Success APDU Command:"); string datastring = BitConverter.ToString(data); AddLog("Data:" + datastring); } else { AddLog("Failure APDU Command:(" + command.Sw1 + "," + command.Sw2 + ")"); string reason = ""; if (command.Exception != null) { reason = command.Exception.Message; } AddLog("Reason:" + reason); } AddLog("-------"); }; controller.OnWriteNdefMessage += (success, reader, message) => { if (success) { AddLog("Success WriteNdefMessage:"); } else { AddLog("Failure WriteNdefMessage:"); } AddLog("-------"); }; controller.OnReadNdefMessage += (success, reader, message) => { if (success) { if (message.Records.Count == 0) { AddLog("Record is invalid."); AddLog("-------"); return; } if (message.Records[0].TypeNameFormat != TypeNameFormat.NfcForumWellKnownType) { AddLog("Record is not support format."); AddLog("-------"); return; } var payload = message.Records[0].Payload; if (payload.GetType() == typeof(TextPayload)) { tabNdefData.SelectedIndex = (int)Tab.Text; TextPayload tp = (TextPayload)payload; textTextData.Text = tp.Text; } else if (payload.GetType() == typeof(UriPayload)) { tabNdefData.SelectedIndex = (int)Tab.Uri; UriPayload up = (UriPayload)payload; comboUriData.SelectedIndex = (int)up.Prefix; textUriData.Text = up.Data; } else { AddLog("Payload is not support format."); AddLog("-------"); return; } AddLog("Success to Read Ndef Data"); } else { AddLog("Failure ReadNdefMessage:"); } AddLog("-------"); }; controller.ConnectService(); foreach (UriPrefix value in Enum.GetValues(typeof(UriPrefix))) { string name = Enum.GetName(typeof(UriPrefix), value); comboUriData.Items.Add(name); } tabNdefData.SelectedIndex = (int)Tab.Text; }