Inheritance: IProximityMessage
コード例 #1
1
       private void OnWriteableTagArrived(ProximityDevice sender, ProximityMessage message)
       {
    
           var dataWriter = new DataWriter();
           dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
           string appLauncher = string.Format(@"mywaiter:MainPage?source=3");
 
           dataWriter.WriteString(appLauncher);
           pubId = sender.PublishBinaryMessage("WindowsUri:WriteTag", dataWriter.DetachBuffer());
   
       }
コード例 #2
1
        private void OnWriteableTagArrived(ProximityDevice sender, ProximityMessage message)
        {
            Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    try
                    {
                        if (
                            MessageBox.Show("Are you sure you want to write to this NFC Tag?", "Confirmation",
                                            MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                        {
                            var dataWriter = new DataWriter();
                            dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
                            string appLauncher = string.Format(@"zVirtualScenes:MainPage?action=scene&id={0}",
                                                               SelectedScene.id);
                            dataWriter.WriteString(appLauncher);
                            pubId = sender.PublishBinaryMessage("WindowsUri:WriteTag", dataWriter.DetachBuffer());
                            MessageBox.Show("Completed writing to the tag.");

                        }
                    }
                    catch (Exception e)
                    {
                        MessageBox.Show("Could not write to the tag.  Reason:" + e.Message);
                    }
                    finally
                    {
                        _proximityDevice.StopSubscribingForMessage(subid);
                    }

                });
        }
コード例 #3
0
 private void messageReceived(Windows.Networking.Proximity.ProximityDevice device,
                              Windows.Networking.Proximity.ProximityMessage message)
 {
     Dispatcher.BeginInvoke(() =>
                            MessageBox.Show("Message received: " + message.DataAsString)
                            );
 }
コード例 #4
0
 private void messageReceived(
     Windows.Networking.Proximity.ProximityDevice device,
     Windows.Networking.Proximity.ProximityMessage message)
 {
     var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
     {
         Synopsis.Text += "Message received: " + message.DataAsString + "\n";
     });
 }
コード例 #5
0
        private void messageReceived(ProximityDevice sender,ProximityMessage message)
        {
            Dispatcher.BeginInvoke(() =>
            {
                textBlockTest.Text += "message modetaget: " + message.DataAsString;
                textBlockTest.Text += "Type: " + message.MessageType;
                Debug.WriteLine("Received from {0}:'{1}'", sender.DeviceId, message.DataAsString);

            });
        }
コード例 #6
0
ファイル: NfcForms.cs プロジェクト: agileorange/NFCForms
 private void MessageReceivedHandler(ProximityDevice device, ProximityMessage message)
 {
     nfcTag.IsNdefSupported = true;
     nfcTag.Id = new byte[0];
     nfcTag.TechList = new System.Collections.ObjectModel.ObservableCollection<string>();
     var rawMsg = message.Data.ToArray();
     nfcTag.NdefMessage = NdefMessage.FromByteArray(rawMsg);
     if (message.MessageType == "WriteableTag")
         nfcDevice.SubscribeForMessage("WriteableTag", WriteableTagHandler);
     else
         RaiseNewTag(nfcTag);
 }
コード例 #7
0
ファイル: MainPage.xaml.cs プロジェクト: andijakl/nfc-bt-demo
 private void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
 {
     SetStatusOutput("Found proximity card");
     // Convert to NdefMessage from NDEF / NFC Library
     var msgArray = message.Data.ToArray();
     NdefMessage ndefMessage = NdefMessage.FromByteArray(msgArray);
     // Loop over all records contained in the message
     foreach (NdefRecord record in ndefMessage)
     {
         // Check the type of each record 
         if (record.CheckSpecializedType(false) == typeof(NdefUriRecord))
         {
             // Convert and extract URI info
             var uriRecord = new NdefUriRecord(record);
             SetStatusOutput("NDEF URI: " + uriRecord.Uri);
         }
     }
 }
コード例 #8
0
ファイル: NFCHelper.cs プロジェクト: JpEncausse/NFCWatcher
        // ------------------------------------------
        //  PRIVATE READER
        // ------------------------------------------
        private void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            // Parse raw byte array to NDEF message
              var rawMsg = message.Data.ToArray();
              var ndefMessage = NdefMessage.FromByteArray(rawMsg);

              // Loop over all records contained in the NDEF message
              foreach (NdefRecord record in ndefMessage) {
            Console.WriteLine("Record type: " + Encoding.UTF8.GetString(record.Type, 0, record.Type.Length));

            // Check the type of each record - handling a Smart Poster in this example
            var specializedType = record.CheckSpecializedType(true);

            // Convert and extract Smart Poster info
            if (specializedType == typeof(NdefSpRecord)) {
              var spRecord = new NdefSpRecord(record);
              String msg = "URI: " + spRecord.Uri + "\n"
                         + "Titles: " + spRecord.TitleCount() + "\n"
                         + "1. Title: " + spRecord.Titles[0].Text + "\n"
                         + "Action set: " + spRecord.ActionInUse();
              NFCManager.getInstance().Alert(msg);
            }

            // Convert and extract URI record info
            else if (specializedType == typeof(NdefUriRecord)) {
              var uriRecord = new NdefUriRecord(record);
              String msg = "URI: " + uriRecord.Uri + "\n";
              NFCManager.getInstance().Alert(msg);
              NFCManager.getInstance().SendRequest(uriRecord.Uri);
            }

            // Convert and extract Mailto record info
            else if (specializedType == typeof(NdefMailtoRecord)) {
              var mailtoRecord = new NdefMailtoRecord(record);
              String msg = "Address: " + mailtoRecord.Address + "\n"
                     + "Subject: " + mailtoRecord.Subject + "\n"
                     + "Body: " + mailtoRecord.Body;
              NFCManager.getInstance().Alert(msg);
            }
              }
        }
コード例 #9
0
ファイル: MainPage.xaml.cs プロジェクト: elpy/NFCTagTest
        private void receivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            var data = message.Data.ToArray();
            var ndefMessage = NdefMessage.FromByteArray(data);

            foreach (NdefRecord record in ndefMessage)
            {
                string type = Encoding.UTF8.GetString(record.Type, 0, record.Type.Length);
                Debug.WriteLine("Record type: " + Encoding.UTF8.GetString(record.Type, 0, record.Type.Length));

                if ("application/json; charset=\"utf-8\"".Equals(type))
                {
                    string json = Encoding.UTF8.GetString(record.Payload, 0, record.Payload.Length);
                    var prototype = new { Employee = new { Id = -1L, Name = string.Empty } };
                    var t = JsonConvert.DeserializeAnonymousType(json, prototype);
                    Debug.WriteLine(string.Format("Employee id = {0}, name = {1}.", t.Employee.Id, t.Employee.Name));
                }
            }

            device.StopSubscribingForMessage(subscribingId);
        }
コード例 #10
0
 public void messageReceivedHandler(ProximityDevice device, ProximityMessage message)
 {
     DateTime thisTapTime = DateTime.UtcNow;
     TimeSpan sinceLastTapIn = thisTapTime - lastTapTime;
     WriteMessageText("Time since last tap (sec): " + sinceLastTapIn.TotalSeconds);
     if (sinceLastTapIn.TotalSeconds < 3)
     {
         return;
     }
     else
     {
         lastTapTime = thisTapTime;
     }
     var userToken = readUserTokenFromTag(message);
     if (loggedIn)
     {
         if (userToken == loggedInUser)
         {
             WriteMessageText("Already logged in, logging out");
             loggedIn = false;
             loggedInUser = "";
             gpiiLogout(userToken);
         }
         else // a different user wants to login, so we will log them out
         {    // first and then let the next person log in
             WriteMessageText("Logged in with different user, will log them out first.");
             gpiiLogout(loggedInUser);
             System.Threading.Thread.Sleep(1000);
             loggedIn = true;
             loggedInUser = userToken;
             gpiiLogin(userToken);
         }
     }
     else
     {
         loggedIn = true;
         loggedInUser = userToken;
         gpiiLogin(userToken);
     }
 }
コード例 #11
0
ファイル: NfcManager.cs プロジェクト: morefun0302/car-trumps
        /// <summary>
        /// The handler that the proximity provider will call when it receives a message.
        /// </summary>
        private void NfcMessageReceived(ProximityDevice sender, ProximityMessage message)
        {
            Message msg = _nfcMessage.DeserializeMessage(message.Data);

            // We got the message, stop subscribing for more
            _proximityDevice.StopSubscribingForMessage(_subscribedMsgId);
            _subscribedMsgId = -1;

            // Invoke the UI thread since NFC works in separate thread(s)
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                switch (state)
                {
                    case ProtoState.DealCard:
                        this.MessageReceived(msg);
                        break;
                    case ProtoState.ShowCard:
                        this.MessageCardReceived(msg);
                        break;
                }
            });
        }
コード例 #12
0
 private void messageReceived(ProximityDevice sender, ProximityMessage message)
 {
     Deployment.Current.Dispatcher.BeginInvoke(() =>
    MessageBox.Show(message.DataAsString));
 }
コード例 #13
0
ファイル: ReadBase.cs プロジェクト: rossdargan/MvxPlugins
 protected MessageReceived GetMessage(ProximityMessage message)
 {
     var buffer = message.Data.ToArray();
     return new MessageReceived("id!!", NdefLibrary.Ndef.NdefMessage.FromByteArray(buffer),this);
 }
コード例 #14
0
        private void OnMessageReceived(ProximityDevice sender, ProximityMessage message)
        {
            if (state == NfcManager.ProtoState.Ready)
            {
                return;
            }

            state = NfcManager.ProtoState.NotReady;

            try
            {
                String msg = message.DataAsString.Substring(0, message.DataAsString.IndexOf('\0'));
                MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(msg));
                DataContractSerializer serializer = new DataContractSerializer(typeof(InitialMessage));
                stream.Position = 0;
                InitialMessage adversaryTime = (InitialMessage)serializer.ReadObject(stream);
                isMaster = (initialMessage.devicetime > adversaryTime.devicetime);
                state = NfcManager.ProtoState.Ready;
                proximityDevice.StopSubscribingForMessage(subscribeId);
                proximityDevice.StopPublishingMessage(publishId);
                subscribeId = -1;
                publishId = -1;
                notifyReady();
            }
            catch (SerializationException)
            {
            }
        }
コード例 #15
0
ファイル: NfcForms.cs プロジェクト: agileorange/NFCForms
 private void WriteableTagHandler(ProximityDevice sender, ProximityMessage message)
 {
     nfcTag.IsWriteable = true;
     nfcTag.MaxSize = System.BitConverter.ToInt32(message.Data.ToArray(), 0);
     RaiseNewTag(nfcTag);
 }
コード例 #16
0
        private void ndefTagReceived(ProximityDevice device, ProximityMessage message)
        {
            String tagAnalysis = "*** " + AppResources.MsgRcvd + " ***\n";

            DataReader dataReader = DataReader.FromBuffer(message.Data);
            String messageBytes = "";
            String messageText = "";
            Byte[] messageArray = new Byte[message.Data.Length];
            int i;
            int j;
            int ndefRecordCount;
            int messageOffset;
            Byte recordFlags;
            int typeLength;
            String typeString;
            Byte textStatus;
            Byte idType;
            int idLength;
            int payloadLength;
            Byte[] payloadArray;
            Boolean validRecord;
            String remainderHex = "";
            String remainderString = "";
            Byte[] tempArray;
            String wellKnownTypeString = "";
            String textEncoding = "";
            int ianaLength = 0;
            String languageCode = "";
            String payloadString = "";
            String payloadBytes = "";
            String uriPrefixString = "";
            Byte param1 = 0;
            Byte param2 = 0;
            Byte param3 = 0;
            String argsString = "";
            Byte rawByte = 0;

            tagAnalysis += AppResources.MsgTypeHdr + " " + message.MessageType + ".\n";
            tagAnalysis += AppResources.MsgLengthHdr + " " + message.Data.Length.ToString() + " " + AppResources.bytes + ".\n";
            tagAnalysis += "\n";

            for (i = 0; i < message.Data.Length; i++) {
                messageArray[i] = dataReader.ReadByte();
            }

            ndefRecordCount = 0;
            while (messageArray.Length > 2)
            {
                ndefRecordCount++;

                messageOffset = 0;
                recordFlags = messageArray[messageOffset++];
                typeLength = 0;
                typeString = "";
                textStatus = 0x00;
                idType = 0x00;
                idLength = 0;
                payloadLength = 0;
                validRecord = false;

                typeLength = messageArray[messageOffset++];
                payloadLength = 0;
                if (isShortRecord(recordFlags))
                {
                    payloadLength += messageArray[messageOffset++];
                }
                else
                {
                    for (i = 0; i < 4; i++)
                    {
                        payloadLength *= 256;
                        payloadLength += messageArray[messageOffset++];
                    }
                }
                if (hasIdLength(recordFlags)) idLength = messageArray[messageOffset++];

                for (i = 0; i < typeLength; i++)
                {
                    typeString += Convert.ToChar(messageArray[i + messageOffset]);
                }
                messageOffset += typeLength;

                payloadArray = new Byte[payloadLength];
                for (i = 0; i < payloadLength; i++)
                {
                    payloadArray[i] = messageArray[i + messageOffset];
                }
                messageOffset += payloadLength;

                messageBytes = "";
                messageText = "";
                for (j = 0; j < messageArray.Length; j++)
                {
                    rawByte = messageArray[j];
                    messageBytes += hexVal(rawByte) + " ";
                    if ((rawByte < 32) || (rawByte > 127)) messageText += '.';
                    else messageText += Convert.ToChar(rawByte);
                }

                remainderHex = "";
                remainderString = "";
                tempArray = new Byte[messageArray.Length - messageOffset];
                Array.ConstrainedCopy(messageArray, messageOffset, tempArray, 0, messageArray.Length - messageOffset);
                messageArray = tempArray;
                for (i = 0; i < messageArray.Length; i++)
                {
                    remainderHex = String.Concat(remainderHex, hexVal(messageArray[i]));
                    remainderHex = String.Concat(remainderHex, " ");
                    if ((messageArray[i] < 32) || (messageArray[i] > 127)) remainderString = String.Concat(remainderString, '.');
                    else remainderString = String.Concat(remainderString, messageArray[i].ToString());
                }

                tagAnalysis += AppResources.NDEFRecHdr + " " + ndefRecordCount.ToString() + "\n";
                tagAnalysis += "\n";

                tagAnalysis += AppResources.TypeLengthHdr + " " + typeLength.ToString() + " " + AppResources.bytes + ".\n";

                tagAnalysis += AppResources.PayloadLengthHdr + " " + payloadLength.ToString() + " " + AppResources.bytes + ".\n";

                if (idLength > 0) tagAnalysis += AppResources.IdLengthHdr + " " + idLength.ToString() + " " + AppResources.bytes + ".\n";
                else tagAnalysis += AppResources.NoId + "\n";

                tagAnalysis += "\n";

                if (typeNameFormat(recordFlags) == 0x01) { // NFC Forum Well Known Type
                    wellKnownTypeString = AppResources.Unknown + " (" + typeString + ")";

                    if (typeString == "T") { // Text
                        wellKnownTypeString = AppResources.Text;

                        textStatus = payloadArray[0];
                        --payloadLength;
                        tempArray = new Byte[payloadLength];
                        Array.ConstrainedCopy(payloadArray, 1, tempArray, 0, payloadLength);
                        payloadArray = tempArray;

                        if ((textStatus & 0x01) != 0) textEncoding = "UTF16";
                        else textEncoding = "UTF8";
                        ianaLength = 0 + (textStatus & 0x3F);

                        languageCode = "";
                        for (i = 0; i < ianaLength; i++) {
                            languageCode = String.Concat(languageCode, Convert.ToChar(payloadArray[0]));
                            --payloadLength;
                            tempArray = new Byte[payloadLength];
                            Array.ConstrainedCopy(payloadArray, 1, tempArray, 0, payloadLength);
                            payloadArray = tempArray;
                        }
                    } else if (typeString == "Sp") { // Smart Poster
                        wellKnownTypeString = AppResources.SmartPoster;
                    } else if (typeString == "U") { // URI
                        wellKnownTypeString = AppResources.URI;

                        idType = payloadArray[0];
                        --payloadLength;
                        tempArray = new Byte[payloadLength];
                        Array.ConstrainedCopy(payloadArray, 1, tempArray, 0, payloadLength);
                        payloadArray = tempArray;

                        uriPrefixString = "";

                        switch (idType)
                        {
                            case 0x00:
                                uriPrefixString = "";
                                break;

                            case 0x01:
                                uriPrefixString = "http://www.";
                                break;

                            case 0x02:
                                uriPrefixString = "https://www.";
                                break;

                            case 0x03:
                                uriPrefixString = "http://";
                                break;

                            case 0x04:
                                uriPrefixString = "https://";
                                break;

                            case 0x05:
                                uriPrefixString = "tel:";
                                break;

                            case 0x06:
                                uriPrefixString = "mailto:";
                                break;

                            case 0x07:
                                uriPrefixString = "ftp://*****:*****@";
                                break;

                            case 0x08:
                                uriPrefixString = "ftp://ftp.";
                                break;

                            case 0x09:
                                uriPrefixString = "ftps://";
                                break;

                            case 0x0a:
                                uriPrefixString = "sftp://";
                                break;

                            case 0x0b:
                                uriPrefixString = "smb://";
                                break;

                            case 0x0c:
                                uriPrefixString = "nfs://";
                                break;

                            case 0x0d:
                                uriPrefixString = "ftp://";
                                break;

                            case 0x0e:
                                uriPrefixString = "dav://";
                                break;

                            case 0x0f:
                                uriPrefixString = "news:";
                                break;
                            case 0x10:
                                uriPrefixString = "telnet://";
                                break;

                            case 0x11:
                                uriPrefixString = "imap:";
                                break;

                            case 0x12:
                                uriPrefixString = "rtsp://";
                                break;

                            case 0x13:
                                uriPrefixString = "urn:";
                                break;

                            case 0x14:
                                uriPrefixString = " pop:";
                                break;

                            case 0x15:
                                uriPrefixString = "sip:";
                                break;

                            case 0x16:
                                uriPrefixString = "sips:";
                                break;

                            case 0x17:
                                uriPrefixString = "tftp:";
                                break;

                            case 0x18:
                                uriPrefixString = "btspp://";
                                break;

                            case 0x19:
                                uriPrefixString = "btl2cap://";
                                break;

                            case 0x1a:
                                uriPrefixString = "btgoep://";
                                break;

                            case 0x1b:
                                uriPrefixString = "tcpobex://";
                                break;

                            case 0x1c:
                                uriPrefixString = "irdaobex://";
                                break;

                            case 0x1d:
                                uriPrefixString = "file://";
                                break;

                            case 0x1e:
                                uriPrefixString = "urn:epc:id:";
                                break;

                            case 0x1f:
                                uriPrefixString = "urn:epc:tag";
                                break;

                            case 0x20:
                                uriPrefixString = "urn:epc:pat:";
                                break;

                            case 0x21:
                                uriPrefixString = "urn:epc:raw:";
                                break;

                            case 0x22:
                                uriPrefixString = "urn:epc:";
                                break;

                            case 0x23:
                                uriPrefixString = "urn:nfc:";
                                break;

                            default:
                                uriPrefixString = "RFU";
                                break;
                        }
                    } else if (typeString == "Gc") { // Generic Control
                        wellKnownTypeString = AppResources.GenericCtrl;
                    } else if (typeString == "Hr") { // Handover Request
                        wellKnownTypeString = AppResources.HandoverReq;
                    } else if (typeString == "Hs") { // Handover Select
                        wellKnownTypeString = AppResources.HandoverSel;
                    } else if (typeString == "Hc") { // Handover Carrier
                        wellKnownTypeString = AppResources.HandoverCar;
                    } else if (typeString == "Sg") { // Signature
                        wellKnownTypeString = AppResources.Sig;
                    }

                    tagAnalysis += AppResources.TNF + " = " + Convert.ToString(typeNameFormat(recordFlags), 16) + "\n";
                    tagAnalysis += AppResources.WellKnownTypeHdr + " " + wellKnownTypeString + "\n";
                    tagAnalysis += "\n";

                    if (typeString == "T") {
                        tagAnalysis += AppResources.EncodingHdr + " " + textEncoding + "\n";
                        tagAnalysis += AppResources.LanguageHdr + " " + languageCode + "\n";
                        tagAnalysis += "\n";
                    }
                    else if (typeString == "U") tagAnalysis += AppResources.IdTypeHdr + " " + idType.ToString() + "\n";

                    tagAnalysis += appendNfcMessageFlags(recordFlags);

                    tagAnalysis += AppResources.MsgTextHdr + "\n";
                    tagAnalysis += messageText + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.MsgBytesHdr + "\n";
                    tagAnalysis += messageBytes + "\n";
                    tagAnalysis += "\n";

                    payloadString = "";
                    if (textEncoding == "UTF16")
                    {
                        for (i = 0; i < payloadLength; i += 2)
                        {
                            payloadString += Convert.ToChar(payloadArray[i] + (256 * payloadArray[i + 1]));
                        }
                    }
                    else
                    {
                        for (i = 0; i < payloadLength; i++) payloadString += Convert.ToChar(payloadArray[i]);
                    }
                    if (typeString == "T") {
                        tagAnalysis += AppResources.TextHdr + " " + payloadString + "\n";
                        tagAnalysis += "\n";
                    } else if (typeString == "U") {
                        tagAnalysis += AppResources.URIHdr + " " + uriPrefixString + payloadString + "\n";
                        tagAnalysis += "\n";
                    } else {
                        tagAnalysis += AppResources.PayloadHdr + " " + payloadString + "\n";
                        tagAnalysis += "\n";
                    }
                } else if (typeNameFormat(recordFlags) == 0x02) { // Media Type
                    tagAnalysis += AppResources.TNF + " = " + Convert.ToString(typeNameFormat(recordFlags), 16) + "\n";
                    tagAnalysis += AppResources.MediaTypeHdr + " " + typeString + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.MsgTextHdr + "\n";
                    tagAnalysis += messageText + "\n";

                    if (typeString.ToLower() == "text/plain") {
                        payloadString = "";
                        for (i = 0; i < payloadLength; i += 2)
                        {
                            payloadString += Convert.ToChar(payloadArray[i] + (256 * payloadArray[i + 1]));
                        }
                        tagAnalysis += AppResources.TextHdr + " " + payloadString + "\n\n";

                    }
                    else if ((typeString.ToLower() == "text/vcard") || (typeString.ToLower() == "text/x-vcard"))
                    {
                        payloadString = "";
                        for (i = 0; i < payloadLength; i++) payloadString += Convert.ToChar(payloadArray[i]);
                        payloadBytes = "";
                        for (j = 0; j < payloadArray.Length ; j++)
                        {
                            rawByte = payloadArray[j];
                            payloadBytes += hexVal(rawByte) + " ";
                        }

                        tagAnalysis += AppResources.vCardDataHdr + "\n";
                        tagAnalysis += payloadString + "\n";
                        tagAnalysis += "\n";

                        tagAnalysis += AppResources.VcardBytesHdr + "\n";
                        tagAnalysis += payloadBytes + "\n";
                        tagAnalysis += "\n";

                        tagAnalysis += Vcard.showVcard(typeString, payloadArray);
                    }
                }
                else if (typeNameFormat(recordFlags) == 0x03)
                { // Absolute URI Type
                    param1 = payloadArray[0];
                    --payloadLength;
                    param2 = payloadArray[1];
                    --payloadLength;
                    param3 = payloadArray[2];
                    --payloadLength;

                    tempArray = new Byte[payloadLength];
                    Array.ConstrainedCopy(payloadArray, 3, tempArray, 0, payloadLength);
                    payloadArray = tempArray;

                    argsString = "";
                    for (i = 0; i < payloadLength; i++)
                    {
                        if ((payloadArray[i] < 32) || (payloadArray[i] > 127)) argsString += '.';
                        else argsString += Convert.ToChar(payloadArray[i]);
                    }

                    tagAnalysis += AppResources.TNF + " = " + Convert.ToString(typeNameFormat(recordFlags), 16) + "\n";
                    tagAnalysis += AppResources.AbsUriType + "\n";
                    tagAnalysis += AppResources.Param1 + " " + hexVal(param1) + "\n";
                    tagAnalysis += AppResources.Param2 + " " + hexVal(param2) + "\n";
                    tagAnalysis += AppResources.Param3 + " " + hexVal(param3) + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += appendNfcMessageFlags(recordFlags);

                    tagAnalysis += AppResources.MsgTextHdr + "\n";
                    tagAnalysis += messageText + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.MsgBytesHdr + "\n";
                    tagAnalysis += messageBytes + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.URIHdr + " " + typeString + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.ArgsHdr + " " + argsString + "\n";
                    tagAnalysis += "\n";
                }
                else if (typeNameFormat(recordFlags) == 0x04)
                { // NFC Forum External Type
                    tagAnalysis += AppResources.TNF + " = " + Convert.ToString(typeNameFormat(recordFlags), 16) + "\n";
                    tagAnalysis += AppResources.ExternalType + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += appendNfcMessageFlags(recordFlags);

                    tagAnalysis += AppResources.MsgTextHdr + "\n";
                    tagAnalysis += messageText + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.MsgBytesHdr + "\n";
                    tagAnalysis += messageBytes + "\n";
                    tagAnalysis += "\n";
                } else { // Currently unsupported Type
                    tagAnalysis += AppResources.UnsupportedType + " " + Convert.ToString(typeNameFormat(recordFlags), 16) + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.TNF + " = " + Convert.ToString(typeNameFormat(recordFlags), 16) + "\n";
                    tagAnalysis += AppResources.UnknownType + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += tagAnalysis += appendNfcMessageFlags(recordFlags);

                    tagAnalysis += AppResources.MsgTextHdr + "\n";
                    tagAnalysis += messageText + "\n";
                    tagAnalysis += "\n";

                    tagAnalysis += AppResources.MsgBytesHdr + "\n";
                    tagAnalysis += messageBytes + "\n";
                    tagAnalysis += "\n";
                }
            }
            WriteString(tagAnalysis);
        }
コード例 #17
0
ファイル: MainPage.xaml.cs プロジェクト: Doluci/ndef-nfc
        private async void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            // Get the raw NDEF message data as byte array
            var rawMsg = message.Data.ToArray();

            NdefMessage ndefMessage = null;
            try
            {
                // Let the NDEF library parse the NDEF message out of the raw byte array
                ndefMessage = NdefMessage.FromByteArray(rawMsg);
            }
            catch (NdefException e)
            {
                SetStatusOutput(string.Format(_loader.GetString("InvalidNdef"), e.Message));
                return;
            }

            // Analysis result
            var tagContents = new StringBuilder();

            // Parse tag contents
            try
            {
                // Clear bitmap if the last tag contained an image
                SetStatusImage(null);

                // Parse the contents of the tag
                await ParseTagContents(ndefMessage, tagContents);

                // Update status text for UI
                SetStatusOutput(string.Format(_loader.GetString("StatusTagParsed"), tagContents));
            }
            catch (Exception ex)
            {
                SetStatusOutput(string.Format(_loader.GetString("StatusNfcParsingError"), ex.Message));
            }

        }
コード例 #18
0
ファイル: NdefParser.cs プロジェクト: naotaco/NtNfcLib
 public NdefParser(ProximityMessage message)
 {
     var rawMsg = message.Data.ToArray();
     raw = rawMsg;
     records = new List<NdefRecord>();
 }
コード例 #19
0
 public string readUserTokenFromTag(ProximityMessage message)
 {
     var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(message.Data);
     byte[] bytes = new byte[message.Data.Length];
     dataReader.ReadBytes(bytes);
     var data = Encoding.ASCII.GetString(bytes, 0, (int)message.Data.Length);
     var userToken = data.Substring(7);
     return userToken;
 }
コード例 #20
0
ファイル: Checkin.xaml.cs プロジェクト: roxvicky/SmartParking
        private void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            var rawMsg = message.Data.ToArray();
            var ndefMessage = NdefMessage.FromByteArray(rawMsg);


            ////// Loop over all records contained in the NDEF message
            foreach (NdefRecord record in ndefMessage)
            {

                if (NdefTextRecord.IsRecordType(record))
                {
                    // Convert and extract URI info
                    var textRecord = new NdefTextRecord(record);
                    string[] str = textRecord.Text.Split('|');

                    var Floor_st = str[0];
                    var Zone_st = str[1];
                    var latitude = str[2];
                    var longtitude = str[3];
                    Latitud_do = double.Parse(latitude);
                    Longtitude_do = double.Parse(longtitude);



                    SetLogStatus("Floor: " + Floor_st + " Zone: " + Zone_st);
                    SetFloorStatus("Latitude: " + latitude + "   Longitude: " + longtitude);
                    store.AddDb(Floor_st, Zone_st, Latitud_do, Longtitude_do);

                }
            }
<<<<<<< HEAD
          }
コード例 #21
0
        void messageReceivedHandler(ProximityDevice device, ProximityMessage message)
        {
            var data = DataReader.FromBuffer(message.Data);

            //uint bla = 1;
            //data.InputStreamOptions.
            data.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8;

            //System.Diagnostics.Debug.WriteLine("data"+data.ReadString(bla));
            //MessageBox.Show("URL received");

            HttpWebRequest poster = WebRequest.Create(new Uri("http://easypaytnw.herokuapp.com/reduce_credit")) as HttpWebRequest;
            poster.Method = "POST";
            poster.ContentType = "application/x-www-form-urlencoded";

            poster.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), poster);
            // Write message parsing code here...
        }
コード例 #22
0
ファイル: MainViewModel.cs プロジェクト: mitchdenny/proximity
 private void ReceiveMessage(ProximityDevice device, ProximityMessage message)
 {
     Dispatcher.BeginInvoke(() =>
         {
             var @event = new MessageReceivedNfcEvent();
             Events.Add(@event);
         }
         );
 }
コード例 #23
0
        private void MessageReceived(ProximityDevice sender, ProximityMessage message)
        {
            Debug.WriteLine("Recebida de {0}:'{1}'", sender.DeviceId, message.DataAsString);

            mensagens.Text += "\n" + message.DataAsString;
        }
コード例 #24
0
 private async void messageReceivedHandler(ProximityDevice sender, ProximityMessage message)
 {
     await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
         () =>
         {
             this.OutputString("Message Received");
             this.OutputString("Sender is: " + sender.DeviceId);
             this.OutputString("He said that: " + message.DataAsString);
         });
 }
コード例 #25
0
        private void messageReceived(ProximityDevice sender, ProximityMessage message)
        {
            String tagAnalysis = "*** " + AppResources.MsgRcvd + " ***\n";

            tagAnalysis += AppResources.MsgTypeHdr + " " + message.MessageType + ".\n\n";
            WriteString(tagAnalysis);
        }
コード例 #26
0
        /// <summary>
        /// Parses the details from the given message. The output is a string
        /// that can be appended into the log.
        /// </summary>
        /// <param name="message">The message to parse.</param>
        /// <returns>The parsed details as a string.</returns>
        private string ParseNDEF(ProximityMessage message)
        {
            var output = "";

            using (var buf = DataReader.FromBuffer(message.Data)) {
                NdefRecordUtility.ReadNdefRecord(buf,recordList);

                for (int i = 0, recordNumber = 0, spRecordNumber = 0; i < recordList.Count; i++)
                {
                    NdefRecord record = recordList.ElementAt(i);

                    if (!record.IsSpRecord )
                    {
                        if (System.Text.Encoding.UTF8.GetString(record.Type, 0, record.TypeLength) == "Sp")
                        {
                            output = output + "\n --End of Record No." + recordNumber; spRecordNumber = 0;
                            continue;
                        }
                        else
                        {
                            recordNumber++;
                            output = output + "\n --Record No." + recordNumber;
                        }
                    }
                    else
                    {
                        if (spRecordNumber == 0)
                        {
                            recordNumber++;
                            output = output + "\n --Record No." + recordNumber;
                        }

                        spRecordNumber++;
                        output = output + "\n Sp sub-record No." + spRecordNumber;
                    }

                    output = output + "\n MB:" + ((record.Mb) ? "1;" : "0;");
                    output = output + " ME:" + ((record.Me) ? "1;" : "0;");
                    output = output + " CF:" + ((record.Cf) ? "1;" : "0;");
                    output = output + " SR:" + ((record.Sr) ? "1;" : "0;");
                    output = output + " IL:" + ((record.Il) ? "1;" : "0;");

                    string typeName = NdefRecordUtility.GetTypeNameFormat(record);

                    if (record.TypeLength > 0)
                    {
                        output = output + "\n Type: " + typeName + ":"
                            + System.Text.Encoding.UTF8.GetString(record.Type, 0, record.TypeLength);
                    }

                    if ((record.Il) && (record.IdLength > 0))
                    {
                        output = output + "\n Id:"
                            + System.Text.Encoding.UTF8.GetString(record.Id, 0, record.IdLength);
                    }

                    if ((record.PayloadLength > 0) && (record.Payload != null))
                    {
                        if ((record.Tnf == 0x01)
                            && (System.Text.Encoding.UTF8.GetString(record.Type, 0, record.TypeLength) == "U"))
                        {
                            NdefUriRtd uri = new NdefUriRtd();
                            NdefRecordUtility.ReadUriRtd(record, uri);
                            output = output + "\n Uri: " + uri.GetFullUri();
                        }
                        else if ((record.Tnf == 0x01)
                            && (System.Text.Encoding.UTF8.GetString(record.Type, 0, record.TypeLength) == "T"))
                        {
                            NdefTextRtd text = new NdefTextRtd();
                            NdefRecordUtility.ReadTextRtd(record, text);
                            output = output + "\n Language: " + text.Language;
                            output = output + "\n Encoding: " + text.Encoding;
                            output = output + "\n Text: " + text.Text;
                        }
                        else
                        {
                            if (record.Tnf==0x01)
                            {
                                output = output + "\n Payload:"
                                    + System.Text.Encoding.UTF8.GetString(record.Payload, 0, record.Payload.Length);
                            }
                        }
                    }

                    if (!record.IsSpRecord)
                    {
                        output = output + "\n --End of Record No." + recordNumber;
                    }
                }
            }

            return output;
        }
コード例 #27
0
        private void writeableTagReceived(ProximityDevice sender, ProximityMessage message)
        {
            String tagAnalysis = "*** " + AppResources.MsgRcvd + " ***\n";

            tagAnalysis += AppResources.MsgTypeHdr + " " + message.MessageType + ".\n";

            DataReader dataReader = DataReader.FromBuffer(message.Data);
            dataReader.ByteOrder = Windows.Storage.Streams.ByteOrder.LittleEndian;
            int maxLength = dataReader.ReadInt32();

            tagAnalysis += AppResources.MaxLengthHdr + " " + maxLength.ToString() + " bytes\n";
            WriteString(tagAnalysis + "\n");
        }
コード例 #28
0
        async private void MessageReceivedHandler( ProximityDevice sender, ProximityMessage message )
        {
            await Dispatcher.RunAsync( Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                StopSubscribingForMessage();

                TextMessage.Text = @"Message Received!!";
                TextRecieveMessage.Text = message.DataAsString;
            } );
        }
コード例 #29
0
 void MessageReceived(ProximityDevice proximityDevice, ProximityMessage message)
 {
     rootPage.UpdateLog("Message received: " + message.DataAsString, ProximityDeviceOutputText);
 }
コード例 #30
0
ファイル: MainPage.xaml.cs プロジェクト: RyanAClark/Easy-NFC
        private void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
        {
            // Get the raw NDEF message data as byte array
            var rawMsg = message.Data.ToArray();
            // Let the NDEF library parse the NDEF message out of the raw byte array
            var ndefMessage = NdefMessage.FromByteArray(rawMsg);

            // Analysis result
            var tagContents = new StringBuilder();
           
            // Loop over all records contained in the NDEF message
            foreach (NdefRecord record in ndefMessage)
            {
                // --------------------------------------------------------------------------
                // Print generic information about the record
                if (record.Id != null && record.Id.Length > 0)
                {
                    // Record ID (if present)
                    tagContents.AppendFormat("Id: {0}\n", Encoding.UTF8.GetString(record.Id, 0, record.Id.Length));
                }
                // Record type name, as human readable string
                tagContents.AppendFormat("Type name: {0}\n", ConvertTypeNameFormatToString(record.TypeNameFormat));
                // Record type
                if (record.Type != null && record.Type.Length > 0)
                {
                    tagContents.AppendFormat("Record type: {0}\n",
                                             Encoding.UTF8.GetString(record.Type, 0, record.Type.Length));
                }

                // --------------------------------------------------------------------------
                // Check the type of each record
                // Using 'true' as parameter for CheckSpecializedType() also checks for sub-types of records,
                // e.g., it will return the SMS record type if a URI record starts with "sms:"
                // If using 'false', a URI record will always be returned as Uri record and its contents won't be further analyzed
                // Currently recognized sub-types are: SMS, Mailto, Tel, Nokia Accessories, NearSpeak, WpSettings
                var specializedType = record.CheckSpecializedType(true);

                if (specializedType == typeof(NdefMailtoRecord))
                {
                    // --------------------------------------------------------------------------
                    // Convert and extract Mailto record info
                    var mailtoRecord = new NdefMailtoRecord(record);
                    tagContents.Append("-> Mailto record\n");
                    tagContents.AppendFormat("Address: {0}\n", mailtoRecord.Address);
                    tagContents.AppendFormat("Subject: {0}\n", mailtoRecord.Subject);
                    tagContents.AppendFormat("Body: {0}\n", mailtoRecord.Body);
                }
                else if (specializedType == typeof(NdefUriRecord))
                {
                    // --------------------------------------------------------------------------
                    // Convert and extract URI record info
                    var uriRecord = new NdefUriRecord(record);
                    tagContents.Append("-> URI record\n");
                    tagContents.AppendFormat("URI: {0}\n", uriRecord.Uri);
                }
                else if (specializedType == typeof(NdefSpRecord))
                {
                    // --------------------------------------------------------------------------
                    // Convert and extract Smart Poster info
                    var spRecord = new NdefSpRecord(record);
                    tagContents.Append("-> Smart Poster record\n");
                    tagContents.AppendFormat("URI: {0}", spRecord.Uri);
                    tagContents.AppendFormat("Titles: {0}", spRecord.TitleCount());
                    if (spRecord.TitleCount() > 1)
                        tagContents.AppendFormat("1. Title: {0}", spRecord.Titles[0].Text);
                    tagContents.AppendFormat("Action set: {0}", spRecord.ActionInUse());
                    // You can also check the action (if in use by the record), 
                    // mime type and size of the linked content.
                }
                else if (specializedType == typeof (NdefLaunchAppRecord))
                {
                    
                    // --------------------------------------------------------------------------
                    // Convert and extract LaunchApp record info
                    var launchAppRecord = new NdefLaunchAppRecord(record);
                    tagContents.Append("-> LaunchApp record" + Environment.NewLine);
                   
                    if (!string.IsNullOrEmpty(launchAppRecord.Arguments))
                     
                        tagContents.AppendFormat("Arguments: {0}\n", launchAppRecord.Arguments);
                    if (launchAppRecord.PlatformIds != null)
                    {
                        foreach (var platformIdTuple in launchAppRecord.PlatformIds)
                        {
                            if (platformIdTuple.Key != null)
                                tagContents.AppendFormat("Platform: {0}\n", platformIdTuple.Key);
                            if (platformIdTuple.Value != null)
                                tagContents.AppendFormat("App ID: {0}\n", platformIdTuple.Value);
                        }
                    }
                }
                else
                {
                    // Other type, not handled by this demo
                    tagContents.Append("NDEF record not parsed by this demo app" + Environment.NewLine);
                }
            }
            // Update status text for UI
            SetStatusOutput(string.Format(AppResources.StatusTagParsed, tagContents));
        }
コード例 #31
0
        /// <summary>
        /// Gets called when a message is received. Updates the UI by adding
        /// the details into the log and scrolling the log if necessary.
        /// Note that subscription for messages needs to be redone.
        /// </summary>
        /// <param name="sender">ProximityDevice instance</param>
        /// <param name="message">A message to be handled.</param>
        private void MessageReceived(ProximityDevice sender, ProximityMessage message)
        {
            Dispatcher.BeginInvoke(() =>
            {
                if (device != null)
                {
                    device.StopSubscribingForMessage(subscriptionId);
                }

                logText = logText + ParseNDEF(message);
                ScrollViewer.UpdateLayout();
                ScrollViewer.ScrollToVerticalOffset(0);
                SubscribeForMessage();
            });
        }
 void MessageReceived(ProximityDevice proximityDevice, ProximityMessage message)
 {
     var ignored = Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
     {
         ProximityDeviceOutputText.Text += "Message received: " + message.DataAsString + "\n";
     });
 }