GetDataStream() 공개 메소드

public GetDataStream ( ) : IInputStream
리턴 IInputStream
예제 #1
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                  Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            string       message  = await reader.ReadLineAsync();

            Debug.WriteLine("[Playback::Socket_MessageReceived] " + message);

            await Task.Run(() =>
            {
                Task.Yield();
                Logger.m_logger.addLog("Message received - " + message);
            });

            if (message == "WARNING noHits")
            {
                await txNoHitsInfo.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    Brush b = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 0, 0, 0));
                    txNoHitsInfo.Foreground = b;
                });


                // That way is not really recommended by Microsoft, but ... it seems to work.
                await Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(task =>
                {
                    txNoHitsInfo.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        Brush b = new SolidColorBrush(Windows.UI.Color.FromArgb(0, 0, 0, 0));
                        txNoHitsInfo.Foreground = b;
                    });
                });
            }
        }
예제 #2
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadLineAsync();

        m_sStatus = "Message received: " + message;

        if (message.StartsWith("NAV"))
        {
            rotateCylinder(message);
        }
        else if (message.StartsWith("POS"))
        {
            performRaycast(message);
        }
        else if (message.StartsWith("ANNOTATION"))
        {
            processAnnotation(message);
        }
        else if (message.StartsWith("DEBUG"))
        {
            processDebug(message);
        }
        else if (message.StartsWith("MESSAGE"))
        {
            processMessage(message);
        }
    }
    private void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                        Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        Debug.Log("Datagram socket message received");

        //Read the message that was received from the UDP echo client.
        Stream streamIn = args.GetDataStream().AsStreamForRead();

        byte[] msg = ReadToEnd(streamIn);

        ArrayList messages = Osc.PacketToOscMessages(msg, msg.Length);

        foreach (OscMessage om in messages)
        {
            if (AllMessageHandler != null)
            {
                try
                {
                    AllMessageHandler(om);
                }
                catch (Exception e)
                {
                    Debug.Log(e.ToString());
                    return;
                }
            }
        }
    }
예제 #4
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                  Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            //Read the message that was received from the UDP echo client.
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            string       message  = await reader.ReadLineAsync();

            Debug.Log("MESSAGE: " + message);

            if (ExecuteOnMainThread.Count == 0)
            {
                ExecuteOnMainThread.Enqueue(() =>
                {
                    Debug.Log("Enqueue MESSAGE: " + message);
                    try
                    {
                    }
                    catch (FormatException e)
                    {
                        Debug.Log(e.Message);
                    }
                });
            }
        }
예제 #5
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        Debug.Log("GOT MESSAGE: ");
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadLineAsync();

        Debug.Log("MESSAGE: " + message);
        //Debug.Log(message.Length + " " + message[message.Length - 1]);

        //Debug.Log(message[0].Equals('<'));
        //Debug.Log(message[message.Length - 1].Equals('>'));
        string[] values = message.Split(',');

        if (values.Length == 4)
        {
            rocket.SetOrientation(float.Parse(values[0]), float.Parse(values[1]), float.Parse(values[2]), float.Parse(values[3]));
        }
        else if (values.Length == 3)
        {
            rocket.SetOrientation(float.Parse(values[0]), float.Parse(values[1]), float.Parse(values[2]));
        }
    }
예제 #6
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                  Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            // lock multi event
            socket.MessageReceived -= Socket_MessageReceived;

            //Debug.Log("OSCSERVER UWP  Socket_MessageReceived");

            //Read the message that was received from the UDP echo client.
            Stream streamIn = args.GetDataStream().AsStreamForRead();

            StreamReader reader = new StreamReader(streamIn);

            byte[] bytes = reader.CurrentEncoding.GetBytes(reader.ReadToEnd());

            streamIn.Dispose();
            reader.Dispose();

            OSCPacket packet = OSCPacket.Unpack(bytes);

            _lastReceivedPacket = packet;

            PacketReceivedEvent(this, _lastReceivedPacket);

            // unlock multi event
            socket.MessageReceived += Socket_MessageReceived;
        }
예제 #7
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                  Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            // 多重イベントを抑制
            //m_udp.MessageReceived -= Socket_MessageReceived;

            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);

            int port;

            Int32.TryParse(args.RemotePort, out port);

            ReceiveDataType r = new ReceiveDataType();

            try
            {
                r.data = await reader.ReadLineAsync();

                r.remoteIP = new IPEndPoint(IPAddress.Parse(args.RemoteAddress.ToString()), port);
                m_receivedData.Enqueue(r);
            } catch (Exception e)
            {
            }

            // イベント発生を許可
            //m_udp.MessageReceived += Socket_MessageReceived;
        }
예제 #8
0
    private void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                        Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Debug.Log("GOT MESSAGE FROM: " + args.RemoteAddress.DisplayName);
        //Read the message that was received from the UDP  client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        MemoryStream ms       = ToMemoryStream(streamIn);

        byte[] msgData = ms.ToArray();

        /*
         *  if (ExecuteOnMainThread.Count == 0)
         *  {
         *      ExecuteOnMainThread.Enqueue(() =>
         *      {
         *          Debug.Log("ENQEUED ");
         *          if (udpEvent != null){
         *         Debug.Log("Call udp event.");
         *             udpEvent.Invoke(args.RemoteAddress.DisplayName, internalPort, msgData);
         *      }
         *      });
         *  }
         */

        //string dataString = System.Text.Encoding.UTF8.GetString (msgData);
        string dataString = string.Join(" ", msgData);

        //Debug.Log(dataString);
        if (textUpdater != null)
        {
            //Debug.Log("Set text");
            //textUpdater.setText(dataString);
            textUpdater.setText(msgData[0]);
        }
    }
예제 #9
0
        private void ServerDatagramSocket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            Debug.WriteLine("received packet");
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            MemoryStream image    = ToMemoryStream(streamIn);

            Save_Image(image);
        }
예제 #10
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);

        message = await reader.ReadLineAsync();
    }
예제 #11
0
    // ===================================================== Code that only runs on UWP  =====================================================================//

#if NETFX_CORE
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadToEndAsync(); // this is a UDP message, so we can safely read all the lines

        messageQueue.Enqueue(message);
    }
예제 #12
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = reader.ReadToEnd();

        Debug.Log("MESSAGE: " + message);
        text = message;
    }
예제 #13
0
        private async void UDPListener_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            string request = "";

            using (var streamReader = new StreamReader(args.GetDataStream().AsStreamForRead()))
            {
                request = await streamReader.ReadLineAsync();
            }

            Debug(string.Format("recieved: " + request + "from:" + args.RemoteAddress.CanonicalName));
        }
예제 #14
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                  Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            string       message  = await reader.ReadLineAsync();

            Debug.WriteLine("[Playback::Socket_MessageReceived] " + message);

            if (message == "CALL start")
            {
                if (m_bIsConnected == false)
                {
                    ushort usPortRemotVideo;
                    ushort.TryParse(m_sPortRemoteVideo, out usPortRemotVideo);
                    bool statusConnection = await connect(m_sIPRemoteVideo, usPortRemotVideo);

                    if (statusConnection)
                    {
                        await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            StartPlayback(m_sIPRemoteVideo, m_sPortRemoteVideo);
                        });

                        await videoPlayer.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            videoPlayer.Visibility = Visibility.Visible;
                        });

                        m_bIsConnected = true;
                    }
                }
            }
            else if (message == "WARNING noHits")
            {
                await txNoHitsInfo.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    Brush b = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 0, 0, 0));
                    txNoHitsInfo.Foreground = b;
                });


                // That way is not really recommended by Microsoft, but ... it seems to work.
                await Task.Delay(TimeSpan.FromSeconds(2)).ContinueWith(task =>
                {
                    txNoHitsInfo.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        Brush b = new SolidColorBrush(Windows.UI.Color.FromArgb(0, 0, 0, 0));
                        txNoHitsInfo.Foreground = b;
                    });
                });
            }
        }
예제 #15
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        Debug.Log("Triggering new message!");
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadLineAsync();

        messages.Add(message);
        Debug.Log("MESSAGE: " + message);
    }
예제 #16
0
        private async void MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
                          async () =>
                          {
                              String msg = await readMessage(args.GetDataStream());
                              this.OutputString("Received from" + args.RemoteAddress.RawName + ": " + msg);
                          }

                );


        }
예제 #17
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Debug.Log("Received message: ");
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadLineAsync();

        Debug.Log("Message: " + message);

        lastReceivedUDPPacket = message;
        receivedUDPPacketQueue.Enqueue(message);
    }
예제 #18
0
    private void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Read the message that was received from the UDP  client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        MemoryStream ms       = ToMemoryStream(streamIn);

        byte[] msgData = ms.ToArray();


        if (ExecuteOnMainThread.Count == 0)
        {
            ExecuteOnMainThread.Enqueue(() => { InterpreteUDPData(msgData); });
        }
    }
예제 #19
0
        /// <summary>
        /// Event handler that gets called when a message is received on the socket
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="data"></param>
        private static void MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            Stream streamIn = args.GetDataStream().AsStreamForRead();

            byte[] byteArray;

            // Use the memory stream to convert the stream to a byte array
            using (var memoryStream = new MemoryStream())
            {
                streamIn.CopyTo(memoryStream);
                byteArray = memoryStream.ToArray();
            }

            // Data received, create a new NetworkMessage
            byte messageId = byteArray[0];

            // Remove the message ID from the data
            byte[] message = new byte[byteArray.Length - 1];

            for (int i = 1; i < byteArray.Length; ++i)
            {
                message[i - 1] = byteArray[i];
            }

            // Build network message
            NetworkMessage nm = new NetworkMessage(messageId, message);

            // Call the correct callback method
            if (SocketClientManager.callbackMethods.ContainsKey(messageId))
            {
                // Catch any exceptions and rethrow them,
                // so a user gets a good exception instead of a
                // object disposed exception
                try
                {
                    SocketClientManager.callbackMethods[messageId](nm);
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            else
            {
                PrintDebug("No known callback for message ID " + messageId.ToString());
            }
        }
예제 #20
0
    async void OnMessage
        (Windows.Networking.Sockets.DatagramSocket sender,
        Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        using (System.IO.Stream stream = args.GetDataStream().AsStreamForRead())
        {
            // 受信データを取得
            byte[] receiveBytes = new byte[MAX_BUFFER_SIZE];
            await stream.ReadAsync(receiveBytes, 0, MAX_BUFFER_SIZE);

            lock (p_LockObject)
            {
                // 受信データを処理に引き渡す
                UDPReceiveEvent(receiveBytes);
            }
        }
    }
예제 #21
0
        internal async void DatagramMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            var remoteAddress = args.RemoteAddress.CanonicalName;
            var remotePort = args.RemotePort;
            byte[] allBytes;

            var stream = args.GetDataStream().AsStreamForRead();
            using (var mem = new MemoryStream())
            {
                await stream.CopyToAsync(mem);
                allBytes = mem.ToArray();
            }

            var wrapperArgs = new UdpSocketMessageReceivedEventArgs(remoteAddress, remotePort, allBytes);

            if (MessageReceived != null)
                MessageReceived(this, wrapperArgs);
        }
예제 #22
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Read the message that was received from the UDP echo client.

        try
        {
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            returnData = await reader.ReadLineAsync();
        }
        catch (Exception e)
        {
            Debug.Log(e.ToString());
            Debug.Log(Windows.Networking.Sockets.SocketError.GetStatus(e.HResult).ToString());
            return;
        }
    }
예제 #23
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                  Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            //Debug.Log("GOT MESSAGE: ");
            //Read the message that was received from the UDP echo client.
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            string       message  = await reader.ReadLineAsync();

            //Debug.Log("MESSAGE: " + message);

            if (ExecuteOnMainThread.Count == 0)
            {
                ExecuteOnMainThread.Enqueue(() =>
                {
                    Debug.Log("Enqueue MESSAGE: " + message);
                    try
                    {
                        if (message == "restart")
                        {
                            ExperimentManager.Instance.ResetScene();
                        }
                        else if (message == "cube")
                        {
                            ExperimentManager.Instance.SetItem("cube");
                        }
                        else if (message == "sphere")
                        {
                            ExperimentManager.Instance.SetItem("sphere");
                        }
                        else // scale
                        {
                            string[] tokens = message.Split(' ');
                            ExperimentManager.Instance.SetItemScale(tokens[1]);
                            ExperimentManager.Instance.SetTargetScale(tokens[2]);
                        }
                    }
                    catch (FormatException e)
                    {
                        Debug.Log(e.Message);
                    }
                });
            }
        }
        private async void socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            if (!IsRunning)
                return;

            MemoryStream stream = new MemoryStream();
            await args.GetDataStream().AsStreamForRead().CopyToAsync(stream);
            byte[] data = stream.ToArray();

            if (DataReceived != null)
            {
                OnDataReceived(new DataReceivedEventArgs()
                {
                    Data = data,
                    Length = data.Length,
                    SenderAddress = args.RemoteAddress.RawName
                });
            }
        }
예제 #25
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        // Read the message that was received from the UDP echo client.
        // Initialize the streaming
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadLineAsync();

        // parse the input string
        char[]   delimiterChars = { ' ' };
        string[] words          = message.Split(delimiterChars);

        // the first 3 numbers received is the start position
        StartPosition.x = float.Parse(words[0]);
        StartPosition.y = float.Parse(words[1]);
        StartPosition.z = float.Parse(words[2]);

        // the second 3 numbers received is the end position
        EndPosition.x = float.Parse(words[3]);
        EndPosition.y = float.Parse(words[4]);
        EndPosition.z = float.Parse(words[5]);

        // the rest of numbers are transformation matrix from marker to RGBD Camera
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                MarkerToCamera[i, j] = float.Parse(words[i * 4 + j + 6]);
            }
        }

        // convert the Vectors to string for verify
        string startPos = StartPosition.ToString();
        string endPos   = EndPosition.ToString();
        string T        = MarkerToCamera.ToString();

        // show the received message on log
        // Debug.Log("Received: \n" + message);
        // Debug.Log("Processed Start Position: \n" + startPos);
        // Debug.Log("Processed End Position: \n" + endPos);
        // Debug.Log("Processed Matrix: \n" + T);
    }
예제 #26
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        Debug.Log("GOT MESSAGE: ");
        //Read the message that was received from the UDP echo client.
        Stream       streamIn = args.GetDataStream().AsStreamForRead();
        StreamReader reader   = new StreamReader(streamIn);
        string       message  = await reader.ReadLineAsync();

        Debug.Log("MESSAGE: " + message);

        if (ExecuteOnMainThread.Count == 0)
        {
            ExecuteOnMainThread.Enqueue(() =>
            {
                Thermostat.Temperature = float.Parse(message);
            });
        }
    }
예제 #27
0
	private void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
	Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
	{
	Debug.Log("GOT MESSAGE FROM: " + args.RemoteAddress.DisplayName);
	//Read the message that was received from the UDP  client.
	Stream streamIn = args.GetDataStream().AsStreamForRead();
	MemoryStream ms = ToMemoryStream(streamIn);
	byte[] msgData = ms.ToArray();


	if (ExecuteOnMainThread.Count == 0)
	{
	ExecuteOnMainThread.Enqueue(() =>
	{
	Debug.Log("ENQEUED ");
	if (udpEvent != null)
	udpEvent.Invoke(args.RemoteAddress.DisplayName, internalPort, msgData);
	});
	}
	}
예제 #28
0
    private async void Listener_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                                Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        Debug.Log("DATA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!: ");
        try {
            //Read the message that was received from the UDP echo client.
            Stream       streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader   = new StreamReader(streamIn);
            string       message  = await reader.ReadToEndAsync();

            lock (_receiveQueueLock) {
                Debug.Log("REC: " + message);
                _receiveQueue.Enqueue(message);
            }
        } catch (Exception e) {
            Debug.Log("DATA LISTENER EXCEPTION: " + e.ToString());
            Debug.Log(SocketError.GetStatus(e.HResult).ToString());
            return;
        }
    }
예제 #29
0
        private async void UDPListener_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender, Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {
            try
            {
                string request = "";

                using (var streamReader = new StreamReader(args.GetDataStream().AsStreamForRead()))
                {
                    request = await streamReader.ReadLineAsync();
                }

                Message m = Message.Deserialize(request);

                NewUDPmessageFromDevice?.Invoke(this, m);
            }
            catch (Exception e)
            {
                ;
            }
        }
예제 #30
0
        private async void SocketOnMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            try
            {
                var result = args.GetDataStream();
                var resultStream = result.AsStreamForRead(1024);

                using (var reader = new StreamReader(resultStream))
                {
                    var text = await reader.ReadToEndAsync();
                    discoverResponce = text;
                    if (autoEvent != null)
                    {
                        autoEvent.Set();
                    }
                    dataReceived(text);
                }
            }
            catch (Exception e)
            { }
        }
예제 #31
0
		private async void datagramSocket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
		{
			if (args.LocalAddress == args.RemoteAddress)
				return;

			byte[] payload;
			using (var dataReader = new DataReader(args.GetDataStream()))
			{
				var count = await dataReader.LoadAsync(26);
				if (count != 26)
					return;

				payload = new byte[dataReader.UnconsumedBufferLength];
				dataReader.ReadBytes(payload);
			}

			var cubeDiscoveredEventArgs = new CubeDiscoveredEventArgs
			{
				RemoteAddress = args.RemoteAddress,
				CubeInfo = ParsePayload(payload)
			};

			CubeDiscovered?.Invoke(this, cubeDiscoveredEventArgs);
		}
예제 #32
0
        private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
            Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
        {

        try
        {
            //Read the message that was received from the UDP echo client.
            Stream streamIn = args.GetDataStream().AsStreamForRead();
            StreamReader reader = new StreamReader(streamIn);
            string jsonData = await reader.ReadToEndAsync();
            //Debug.Log("MESSAGE: " + jsonData);
            //UnityEngine.Debug.LogError(jsonData);

              DataStruct newData = Newtonsoft.Json.JsonConvert.DeserializeObject<DataStruct>(jsonData);
              UdpEvent.onDataRecieved(newData);
        }

        catch (Exception e)
        {
            Exception mye = e;
            String tst = mye.Message;
            string sts = "";
        }
        }
예제 #33
0
        /// <summary>
        /// Fired when a message is received on the socket
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private async void DataSocket_MessageRecieved(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            try
            {
                if(m_mode == DiscoveryMode.Broadcast)
                {
                    if(args.RemoteAddress.RawName == m_currentIp)
                    {
                        // This is us talking, ignore it.
                        return;
                    }

                    // If we got something on the port we it means a listener has arrived.
                    // We should broadcast now.
                    m_workCountDown = -10;
                    DoWork(0);
                }
                else
                {
                    // If this is a listener we received a broadcast, try to read and 
                    // parse it.
                    DataReader reader = new DataReader(args.GetDataStream());

                    // Wait for a new message, here we wait for enough data to represent the string size
                    // if we don't get all of the data, the socket was closed.
                    uint waitData = await reader.LoadAsync(sizeof(uint));
                    if (waitData != sizeof(uint))
                    {
                        // We didn't get it all, the socket is closed.
                        return;
                    }
                    // Get the string size
                    uint stringLen = reader.ReadUInt32();

                    // Now wait for the actual string data
                    uint stringWaitData = await reader.LoadAsync(stringLen);
                    if (stringWaitData != stringLen)
                    {
                        // We couldn't read the full string length.
                        return;
                    }

                    // Get the actual string
                    string ipAddress = reader.ReadString(stringLen);

                    // Do some simple validation
                    Regex ip = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
                    if (ip.IsMatch(ipAddress))
                    {
                        if (m_listener != null)
                        {
                            m_listener.OnClientFound(ipAddress);
                        }
                    }
                }   
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("Exception in UDP message received. Message: " + e.Message);
            }
        }
        /// <summary>
        /// When a new message is received, the participant is added to the list of Participants.
        /// </summary>
        private async void MessageToConnectReceivedFromParticipantAsync(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            var participant = new UdpParticipantInformation { Host = args.RemoteAddress };

            // Read the subscriber's message.
            using (var reader = new StreamReader(args.GetDataStream().AsStreamForRead()))
            {
                string message = await reader.ReadLineAsync();
                
                // Add the participant.
                base.AddParticipant(participant, message);
            }
        }
 private async void _socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
 {
     var stream = args.GetDataStream();
 
     IBuffer buffer = new Windows.Storage.Streams.Buffer(10240);
     var bytesRead = buffer.Capacity;
     while (bytesRead == buffer.Capacity)
     {
         IBuffer data = await stream.ReadAsync(buffer, buffer.Capacity, InputStreamOptions.Partial);
         bytesRead = data.Length;
         if (data.Length == 0) break;
         _emitRecv(data, args.RemoteAddress.DisplayName, Int32.Parse(args.RemotePort));
     }
 }
 private void SocketOnMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
 {
     if (MessageReceived != null)
     {
         var reader = new StreamReader(args.GetDataStream().AsStreamForRead());
         {
             var response = reader.ReadToEndAsync().Result;
             MessageReceived(this, response);
         }
     }
 }
예제 #37
0
        async void socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            IInputStream result = args.GetDataStream();
            var resultStream = result.AsStreamForRead(1024);
            string text = "";

            using (var reader = new StreamReader(resultStream))
            {
                text = await reader.ReadToEndAsync();
            }

            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                txtServerResponse.Text = text;
            });
        }
        private async void Socket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            //Read the message that was received from the UDP echo server.
            var streamIn = args.GetDataStream().AsStreamForRead();
            var reader = new StreamReader(streamIn);
            var message = await reader.ReadLineAsync();

            ConnectionInProgress = false;
            socket.Dispose();
            socket = new DatagramSocket();

            //if (_registerAttempts >= 5 && message == "1,ERR,1,\"Not yet registered. See WifiLink\"")
            //{
            //    await this.Register();
            //}
        }
		private async void SocketOnMessageReceived(DatagramSocket socket, DatagramSocketMessageReceivedEventArgs args)
		{
			using (var reader = new StreamReader(args.GetDataStream().AsStreamForRead(bufferSize)))
			{
				Debug.WriteLine("#> [DiscoveryCloudletMulticast]: Wait Reply...");
				string message = await reader.ReadToEndAsync();
				if (message.Contains("="))
				{
					string[] extractMessage = message.Split(new char[] { '=' });
					Stop();

					MposFramework.Instance.EndpointController.FoundCloudlet(extractMessage[1]);
					Debug.WriteLine("#> [ReceiveReplyCloudlet]: Finished Reply Cloudlet listen");
				}
			}
			socket.Dispose();
		}
		private async void SocketOnMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
		{
			try
			{
				IInputStream result = args.GetDataStream();
				Stream resultStream = result.AsStreamForRead(1024);

				using (StreamReader reader = new StreamReader(resultStream))
				{
					string messageText = reader.ReadToEnd();

					if (args.RemoteAddress.CanonicalName != CurrentIPAddress())
					{
						NetworkMessagePacket message = Serialiser.DeserializeFromXml<NetworkMessagePacket>(messageText);

						if (message.Command == eProtocol.Acknowledge || message.Command == eProtocol.Ping)
						{
							RemoveMessageFromQueue(message.ID);
						}
						else if (!m_recentMessages.Contains(message.ID))
						{
							m_recentMessages.Push(message.ID);

							await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync
								(CoreDispatcherPriority.Normal, () =>
								{
									DecodeMessage(args.RemoteAddress, message);
								});
						}
						AcknowledgedMessage(args.RemoteAddress.CanonicalName, message);
					}
				}
			}
			catch (Exception ex)
			{
				PostMessage(ex.Message);
			}
		}
예제 #41
0
        private void TvListenCompleted(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs e)
        {
            var response = new StreamReader(e.GetDataStream().AsStreamForRead()).ReadToEnd();
            System.Diagnostics.Debug.WriteLine("Received from {0}: {1}", e.RemoteAddress.ToString(), response);

            if (response.Contains("urn:samsung.com:device:RemoteControlReceiver")
                || response.Contains("RemoteControlReceiver.xml")
                || response.Contains("PersonalMessageReceiver.xml")
                || response.Contains("SamsungMRDesc.xml"))
            {
                if (TvFound != null)
                {
                    TvFound(e.RemoteAddress, UInt16.Parse(e.RemotePort), response);
                }
            }
        }
        /// <summary>
        /// Adds the manager to the list of Managers, when a UDP advertisement message is received..
        /// </summary>
        private async void AdvertisementMessageReceivedFromManagerAsync(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            // Read the advertisement message.
            using (var reader = new StreamReader(args.GetDataStream().AsStreamForRead()))
            {
                string message = await reader.ReadLineAsync();

                // Add the manager to the list of Managers.
                base.AddManager(new UdpManagerInformation { Host = args.RemoteAddress }, message);
            }
        }
예제 #43
0
    private async void Socket_MessageReceived(Windows.Networking.Sockets.DatagramSocket sender,
                                              Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs args)
    {
        //Read the message that was received from the UDP echo client.
        Stream streamIn = args.GetDataStream().AsStreamForRead();

        Byte[] header = new Byte[2];

        await streamIn.ReadAsync(header, 0, 2);

        string hearderStr = BitConverter.ToString(header);

        // 遥测数据头 AA 55
        Debug.Log("header:" + hearderStr);
        // 验证同步码
        if ("AA-55" == hearderStr)
        {
            Byte[] data = new Byte[80];
            await streamIn.ReadAsync(data, 0, 80);

            // 类型为数据
            DroneData droneData = new DroneData(data);

            int sum = 0;
            for (int i = 0; i < 80; i++)
            {
                sum += data[i];
            }
            string str  = Convert.ToString(sum, 2);
            string real = str;
            if (real.Length >= 8)
            {
                real = str.Substring(str.Length - 8);
            }
            面的代码是校验和对比,测试时可以注释掉
            Byte verification = Convert.ToByte(real, 2);
            if (verification != droneData.Verification)
            {
                Debug.Log("Verification byte is wrong");
                return;
            }

            Debug.Log("Data: " + BitConverter.ToString(data));
            if (anchor != null && videoManager.Captured)
            {
                float leftTopX     = Convert.ToSingle(droneData.LeftTopX);
                float leftTopY     = Convert.ToSingle(droneData.LeftTopY);
                float rightBottomX = Convert.ToSingle(droneData.RightBottomX);
                float rightBottomY = Convert.ToSingle(droneData.RightBottomY);

                if (leftTopX < 0)
                {
                    leftTopX = 0;
                }
                else if (leftTopX > 1920)
                {
                    leftTopX = 1920;
                }
                if (leftTopY < 0)
                {
                    leftTopY = 0;
                }
                else if (leftTopY > 1080)
                {
                    leftTopY = 1080;
                }
                if (rightBottomX < 0)
                {
                    rightBottomX = 0;
                }
                else if (rightBottomX > 1920)
                {
                    rightBottomX = 1920;
                }
                if (rightBottomY < 0)
                {
                    rightBottomY = 0;
                }
                else if (rightBottomY > 1080)
                {
                    rightBottomY = 1080;
                }
                vectors    = new Vector3[2];
                vectors[0] = new Vector3(leftTopX, -leftTopY, 0);
                vectors[1] = new Vector3(rightBottomX, -rightBottomY, 0);
                prepared   = true;
            }

            UnityEngine.WSA.Application.InvokeOnAppThread(() =>
            {
                for (int i = 0; i < infos.Length; i++)
                {
                    //Modify 4/13/2017
                    string name = infos[i].name;
                    switch (name)
                    {
                    case "time":
                        int year       = Convert.ToInt16(droneData.Fly.Year);
                        int min        = Convert.ToInt16(droneData.Fly.Min);
                        int month      = Convert.ToInt16(droneData.Fly.Month);
                        int date       = Convert.ToInt16(droneData.Fly.Date);
                        int hour       = Convert.ToInt16(droneData.Fly.Hour);
                        int sec        = Convert.ToInt16(droneData.Fly.Sec);
                        int percentSec = Convert.ToInt16(droneData.Fly.PercentSec);
                        if (year < 0 || year > 99)
                        {
                            year = 0;
                        }
                        if (month < 0 || month > 12)
                        {
                            month = 0;
                        }
                        if (date < 0 || date > 31)
                        {
                            date = 0;
                        }
                        if (hour < 0 || hour > 23)
                        {
                            hour = 0;
                        }
                        if (min < 0 || min > 59)
                        {
                            min = 0;
                        }
                        if (sec < 0 || sec > 59)
                        {
                            sec = 0;
                        }
                        if (percentSec < 0 || percentSec > 99)
                        {
                            percentSec = 0;
                        }
                        texts[i].text = originalTexts[i] + (" " + year + "年 " + month + "月 " + date + "日 " + hour + "时 " + min + "分 " + sec + "秒 " + percentSec + "百分秒").ToString();
                        break;

                    case "flytime":
                        int v8 = droneData.Fly.Stars;
                        if (v8 < 0)
                        {
                            v8 = 0;
                        }
                        else if (v8 > 24)
                        {
                            v8 = 24;
                        }
                        texts[i].text = originalTexts[i] + (v8).ToString() + "颗";
                        break;

                    case "flyangle2":
                        int v5 = (int)(droneData.Fly.MovingAngle * 0.01);
                        if (v5 < 0)
                        {
                            v5 = 0;
                        }
                        else if (v5 > 360)
                        {
                            v5 = 360;
                        }
                        texts[i].text = originalTexts[i] + (v5).ToString() + "°";
                        break;

                    case "updownangle2":
                        int v6 = (int)(droneData.Fly.UpdownAngle * 0.01);
                        if (v6 < -90)
                        {
                            v6 = -90;
                        }
                        else if (v6 > 90)
                        {
                            v6 = 90;
                        }
                        texts[i].text = originalTexts[i] + (v6).ToString() + "°";
                        break;

                    case "rotateangle":
                        int v7 = (int)(droneData.Fly.UpdownAngle * 0.01);
                        if (v7 < -90)
                        {
                            v7 = 90;
                        }
                        else if (v7 > 90)
                        {
                            v7 = 90;
                        }
                        texts[i].text = originalTexts[i] + (droneData.Fly.RotateAngle * 0.01f).ToString() + "°";
                        break;

                    case "attitude":
                        int v9 = droneData.Fly.Height;
                        if (v9 < -500)
                        {
                            v9 = -500;
                        }
                        else if (v9 > 6000)
                        {
                            v9 = 6000;
                        }
                        texts[i].text = originalTexts[i] + (v9).ToString() + "M";
                        break;

                    case "speed":
                        int v10 = droneData.Fly.Speed;
                        if (v10 < 0)
                        {
                            v10 = 0;
                        }
                        else if (v10 > 1200)
                        {
                            v10 = 1200;
                        }
                        texts[i].text = originalTexts[i] + (v10).ToString() + "Km\\h";
                        break;

                    case "longitude":
                        float f = droneData.Fly.Longtitude * 0.0000001f;

                        if (f < -180)
                        {
                            f = -180;
                        }
                        else if (f > 180)
                        {
                            f = 180;
                        }
                        texts[i].text = originalTexts[i] + (f).ToString() + "°";
                        //经度
                        position        = new PositionInfo();
                        position.Longti = f;
                        gps.text        = texts[i].text;
                        break;

                    case "latitude":
                        //纬度

                        float f2 = droneData.Fly.Latitude * 0.0000001f;

                        if (f2 < -90)
                        {
                            f2 = -90;
                        }
                        else if (f2 > 90)
                        {
                            f2 = 90;
                        }

                        texts[i].text = originalTexts[i] + (f2).ToString() + "°";
                        gps.text     += texts[i].text;
                        position.Lati = f2;
                        //下面这行代码会在地图上画点,但是之前做的都不符合要求,现在被我注释掉了
                        MapController.GetMapController().AddPoints(position.Longti, position.Lati);

                        break;

                    case "status":
                        string state = Convert.ToString(droneData.State2, 2).PadLeft(8, '0');
                        string s     = "";
                        if (state[0] == '0')
                        {
                            s    = "未跟踪好";
                            good = false;
                        }
                        else if (state[0] == '1')
                        {
                            s    = "已跟踪好";
                            good = true;
                        }
                        texts[i].text = originalTexts[i] + s;
                        break;

                    case "hangji":
                        int v11 = (int)(droneData.Fly.TrackAngle * 0.1);
                        if (v11 < 0)
                        {
                            v11 = 0;
                        }
                        else if (v11 > 360)
                        {
                            v11 = 360;
                        }
                        texts[i].text = originalTexts[i] + (v11).ToString() + "°";
                        break;

                    case "flyangle":
                        int value1 = (int)(droneData.PtUpDown * 0.01);
                        if (value1 > 90)
                        {
                            value1 = 90;
                        }
                        else if (value1 < -90)
                        {
                            value1 = -90;
                        }
                        texts[i].text = originalTexts[i] + value1.ToString() + "°";
                        break;

                    case "updownangle":
                        int value = (int)(droneData.PtUpDown * 0.01);
                        if (value > 2)
                        {
                            value = 2;
                        }
                        else if (value < -90)
                        {
                            value = -90;
                        }
                        texts[i].text = originalTexts[i] + value.ToString() + "°";
                        break;

                    case "gyro":
                        Byte mode   = droneData.WorkMode;
                        string str1 = "";
                        switch (mode)
                        {
                        case 0x20:
                            str1 = "目标指向";
                            break;

                        case 0x40:
                            str1 = "手动搜索";
                            break;

                        case 0x80:
                            str1 = "目标跟踪";
                            break;
                        }
                        texts[i].text = originalTexts[i] + str1;
                        break;

                    case "locationdrive":
                        int v1 = droneData.UpDownOffset;
                        if (v1 < -540)
                        {
                            v1 = -540;
                        }
                        else if (v1 > 540)
                        {
                            v1 = 540;
                        }
                        texts[i].text = originalTexts[i] + v1.ToString() + "像素";
                        break;

                    case "directanglespeed":
                        int v3        = droneData.DirectAngle;
                        v3            = (int)(v3 * 0.01);
                        texts[i].text = originalTexts[i] + v3.ToString() + "°/s";
                        break;

                    case "updownanglespeed":
                        int v4        = droneData.UpDownAngle;
                        v4            = (int)(v4 * 0.01);
                        texts[i].text = originalTexts[i] + v4.ToString() + "°/s";
                        break;

                    case "updowndrive":
                        int v2 = droneData.DirectOffset;
                        if (v2 < -960)
                        {
                            v2 = -960;
                        }
                        else if (v2 > 960)
                        {
                            v2 = 960;
                        }
                        texts[i].text = originalTexts[i] + v2.ToString() + "像素";
                        break;

                    case "ptzstatus":
                        UInt32 seq = droneData.Sequence;
                        if (seq < 0x00000000)
                        {
                            seq = 0x00000000;
                        }
                        else if (seq > 0xffffffff)
                        {
                            seq = 0xffffffff;
                        }
                        texts[i].text = originalTexts[i] + seq.ToString();
                        break;

                    case "battery":
                        var aggBattery = Battery.AggregateBattery;
                        var report     = aggBattery.GetReport();
                        double full    = Convert.ToDouble(report.FullChargeCapacityInMilliwattHours.ToString());
                        double cur     = Convert.ToDouble(report.RemainingCapacityInMilliwattHours.ToString());
                        double percent = (cur / full) * 100;
                        texts[i].text  = originalTexts[i] + (int)percent + "%";
                        break;

                    case "wifistatus":
                        string wifi   = (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() == true ? "已连接" : "未连接");
                        texts[i].text = originalTexts[i] + wifi;
                        break;

                    case "controllerstatus":
                        string controllerStatus = (controllerConnection == true ? "手柄已连接" : "手柄未连接");
                        texts[i].text           = originalTexts[i] + controllerStatus;
                        break;

                    case "rheight":
                        float v13 = droneData.Fly.RHeight * 0.1f;
                        if (v13 < -1000)
                        {
                            v13 = -1000f;
                        }
                        else if (v13 > 3000)
                        {
                            v13 = 3000f;
                        }
                        texts[i].text = originalTexts[i] + v13 + "m";
                        break;
                    }
                }
            }, false);
        }

        if (ExecuteOnMainThread.Count == 0)
        {
            ExecuteOnMainThread.Enqueue(() =>
            {
                //Thermostat.Temperature = float.Parse(message);
            });
        }
    }
        private async void SocketOnMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
        {
            var result = args.GetDataStream();
            var resultStream = result.AsStreamForRead(1024);

            using (var reader = new StreamReader(resultStream))
            {
                var text = await reader.ReadToEndAsync();
                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    Log.Info("UDP response received");

                    var parts = text.Split('|');

                    var fullAddress = parts[1].Split(':');

                    FoundServers.Add(new Server {IpAddress = fullAddress[0], PortNo = fullAddress[1]});
                });
            }
        }