Ejemplo n.º 1
0
        private void ListenLoop()
        {
            Console.WriteLine("ListenLoop");
            try
            {
                while (oscReceiver.State != OscSocketState.Closed)
                {
                    Console.WriteLine("wait...");
                    // if we are in a state to recieve
                    if (oscReceiver.State == OscSocketState.Connected)
                    {
                        // get the next message
                        // this will block until one arrives or the socket is closed
                        OscPacket packet = oscReceiver.Receive();

                        // Write the packet to the console
                        Console.WriteLine(packet.ToString());

                        // DO SOMETHING HERE!
                        viewModel.OscText = packet.ToString();
                    }
                    Thread.Sleep(10000);
                }
            }
            catch (Exception ex)
            {
                // if the socket was connected when this happens
                // then tell the user
                if (oscReceiver.State == OscSocketState.Connected)
                {
                    Console.WriteLine("Exception in listen loop");
                    Console.WriteLine(ex.Message);
                }
            }
        }
Ejemplo n.º 2
0
        static void StartLoop(OscReceiver oscReceiver)
        {
            // Variables
            OscPacket     packet   = null;
            HeightData    height_Z = new HeightData();
            StringBuilder sb       = new StringBuilder();
            Stopwatch     sw       = new Stopwatch();

            string[]     extractData;
            const string START_LINE             = "/position";
            bool         connectionNotification = true;
            int          count  = 0;
            const int    CYCLES = 200;

            // Attempt to establish an OSC connection
            try
            {
                sw.Start();
                do
                {
                    if (oscReceiver.State == OscSocketState.Connected)
                    {
                        if (connectionNotification)
                        {
                            Console.WriteLine("connection established");
                            connectionNotification = false;
                        }

                        // Attempt receive OSC packet
                        if (oscReceiver.TryReceive(out packet))
                        {
                            // Extract position data from OSC packet
                            if (packet.ToString().StartsWith(START_LINE))
                            {
                                extractData = packet.ToString().Split(',');
                                int zValue = int.Parse(extractData[4]);    // Extract 'z' position value (height)
                                Console.WriteLine("{4} - Position:\tx:{0}, y:{1}, z:{2}, \tZ_ERROR:{3} ]", extractData[2], extractData[3], extractData[4], height_Z.GetError(zValue), count);
                                sb.AppendLine(string.Format("{0},{1},{2}", extractData[2], extractData[3], extractData[4]));
                                count++;
                            }
                        }
                    }
                } while (count < CYCLES);
                sw.Stop();
                Console.WriteLine("TOTAL COUNT: " + count);
                Console.WriteLine("TOTAL TIME: " + sw.ElapsedMilliseconds / 1000);
                Console.WriteLine(count / (sw.ElapsedMilliseconds / 1000) + " Hz");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine("Error average: {0}", height_Z.GetErrorAverage());
            FILE_IO.WriteLog(sb.ToString());
        }
Ejemplo n.º 3
0
        private void ListenLoop()
        {
            try
            {
                while (m_Receiver.State != OscSocketState.Closed)
                {
                    // if we are in a state to recieve
                    if (m_Receiver.State == OscSocketState.Connected)
                    {
                        // get the next message
                        // this will block until one arrives or the socket is closed
                        OscPacket packet = m_Receiver.Receive();

                        switch (m_Listener.ShouldInvoke(packet))
                        {
                        case OscPacketInvokeAction.Invoke:
                            packetCounter.Increment();
                            //textBoxBuffer.WriteLine("Received packet");
                            textBoxBuffer.WriteLine(packet.ToString());
                            m_Listener.Invoke(packet);
                            break;

                        case OscPacketInvokeAction.DontInvoke:
                            textBoxBuffer.WriteLine("Cannot invoke");
                            textBoxBuffer.WriteLine(packet.ToString());
                            break;

                        case OscPacketInvokeAction.HasError:
                            textBoxBuffer.WriteLine("Error reading osc packet, " + packet.Error);
                            textBoxBuffer.WriteLine(packet.ErrorMessage);
                            break;

                        case OscPacketInvokeAction.Pospone:
                            textBoxBuffer.WriteLine("Posponed bundle");
                            textBoxBuffer.WriteLine(packet.ToString());
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // if the socket was connected when this happens
                // then tell the user
                if (m_Receiver.State == OscSocketState.Connected)
                {
                    textBoxBuffer.WriteLine("Exception in listen loop");
                    textBoxBuffer.WriteLine(ex.Message);
                }
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                // parse the message
                OscPacket msg = OscPacket.Parse(m_MessageBox.Text);

                // write the parsed message
                AppendLine(msg.ToString());

                // if the sender exists
                if (m_Sender != null)
                {
                    for (int i = 0, j = (int)m_SendCount.Value; i < j; i++)
                    {
                        // send
                        m_Sender.Send(msg);
                    }
                }
                else
                {
                    AppendLine("Sender is not connected");
                }
            }
            catch (Exception ex)
            {
                // explicitly tell the user why the message failed to parse
                AppendLine("Error parsing message");
                AppendLine(ex.Message);
                AppendLine("");
            }
        }
Ejemplo n.º 5
0
        static void CheckPackets(OscPacket packet1, string packetStr)
        {
            OscPacket packet2 = OscPacket.Parse(packetStr);

            Console.WriteLine("Input String       : " + packetStr);
            Console.WriteLine("Parsed Packet      : " + packet2.ToString());
            Console.WriteLine("Packets are equal  : " + (packet1 == packet2).ToString());
            Console.WriteLine();
        }
        private void Send_Click(object sender, EventArgs e)
        {
            try
            {
                // parse the message
                OscPacket packet = OscPacket.Parse(m_MessageBox.Text);

                switch (m_Manager.ShouldInvoke(packet))
                {
                case OscPacketInvokeAction.Invoke:
                    m_Manager.Invoke(packet);
                    break;

                case OscPacketInvokeAction.DontInvoke:
                    Debug.WriteLine("Cannot invoke");
                    Debug.WriteLine(packet.ToString());
                    break;

                case OscPacketInvokeAction.HasError:
                    Debug.WriteLine("Error reading osc packet, " + packet.Error);
                    Debug.WriteLine(packet.ErrorMessage);
                    break;

                case OscPacketInvokeAction.Pospone:
                    Debug.WriteLine("Posponed bundle");
                    Debug.WriteLine(packet.ToString());
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                // explicitly tell the user why the message failed to parse
                MessageBox.Show(ex.Message, "Error parsing message");
            }
        }
Ejemplo n.º 7
0
        static void StartLoop(OscReceiver oscReceiver)
        {
            OscPacket packet = null;

            string[]     extractData = null;
            const string START_LINE  = "/position";

            // Attempt to establish an OSC connection
            try
            {
                do
                {
                    if (oscReceiver.State == OscSocketState.Connected)
                    {
                        // Attempt receive OSC packet
                        packet = oscReceiver.Receive();

                        // Extract position data from OSC packet
                        if (packet.ToString().StartsWith(START_LINE))
                        {
                            extractData = packet.ToString().Split(',');
                        }

                        foreach (string dataItem in extractData)
                        {
                            Console.Write(dataItem + "\t");
                        }
                        Console.Write("TagID: " + Convert.ToInt16(extractData[1]).ToString("X"));  // Converts decimal (26400) into hexadecimal (6270)
                        Console.WriteLine();
                    }
                } while (true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Ejemplo n.º 8
0
 /// <summary>
 /// Receives the next available OSC packet, splits the csv data values, and stores into a string array
 /// </summary>
 public void GetOSCPacket()
 {
     try
     {
         if (_OSCReceiver.State == OscSocketState.Connected)
         {
             OscPacket packet = _OSCReceiver.Receive();
             _OSCPacket = packet.ToString().Split(',');
         }
     }
     catch (Exception e)
     {
         Debug.Log(e.Message);
         _OSCReceiver.Close();
     }
 }
Ejemplo n.º 9
0
        protected async Task <T> Send <T>(string path, int timeout = DEFAULT_500_MS_TIMEOUT, params object[] args)
        {
            //wait for the messages to complete being sent
            await Task.Run(() => _sender.WaitForAllMessagesToComplete());

            if (args == null || args.Length == 0)
            {
                _sender.Send(new OscMessage(path));
            }
            else
            {
                _sender.Send(new OscMessage(path, args));
            }

            OscPacket packet = await RecieveOSC(timeout);

            return(FormatResponsePacket <T>(packet?.ToString(), path));
        }
Ejemplo n.º 10
0
        void ListenLoop()
        {
            try
            {
                while (m_Receiver.State != OscSocketState.Closed)
                {
                    // if we are in a state to recieve
                    if (m_Receiver.State == OscSocketState.Connected)
                    {
                        // get the next message
                        // this will block until one arrives or the socket is closed
                        OscPacket packet = m_Receiver.Receive();

                        if (packet == null)
                        {
                            continue;
                        }

                        if (packet.Error == OscPacketError.None)
                        {
                            this.Invoke(new StringEvent(AppendLine), packet.ToString());
                        }
                        else
                        {
                            this.Invoke(new StringEvent(AppendLine), "Error reading packet, " + packet.Error);
                            this.Invoke(new StringEvent(AppendLine), packet.ErrorMessage);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // if the socket was connected when this happens
                // then tell the user
                if (m_Receiver.State == OscSocketState.Connected)
                {
                    this.Invoke(new StringEvent(AppendLine), "Exception in listen loop");
                    this.Invoke(new StringEvent(AppendLine), ex.Message);
                }
            }
        }
		public static string[] ParseOscPacket(OscPacket packet)
		{
			string[] msg = packet.ToString().Split(new string[] { ", " }, StringSplitOptions.None); ;

			return msg;
		}
Ejemplo n.º 12
0
        // Loop for listening and updating dashboard data.
        static void ListenLoop()
        {
            try
            {
                while (Receiver.State != OscSocketState.Closed)
                {
                    if (Receiver.State == OscSocketState.Connected)
                    {
                        // Get the next message, this will block until one arrives or the socket is closed.
                        OscPacket Packet = Receiver.Receive();

                        // Slap the packet in the most recent message variable.
                        App.Current.Dispatcher.InvokeAsync(() =>
                        {
                            // Parses the packet into a message array.
                            OscBundle MessageBundle = OscBundle.Parse(Packet.ToString());
                            foreach (OscPacket MessagePacket in MessageBundle.ToArray())
                            {
                                // Get the latest message.
                                OscMessage LatestMessage = OscMessage.Parse(MessagePacket.ToString());

                                // Determine if the message should be overwritten.
                                bool OverwriteMessage     = false;
                                int OverwriteMessageIndex = 0;
                                foreach (OscData Message in ReceivedOscData)
                                {
                                    if (Message.Path == LatestMessage.Address)
                                    {
                                        OverwriteMessageIndex = ReceivedOscData.IndexOf(Message);
                                        OverwriteMessage      = true;
                                    }
                                }

                                // Cut the address out of the data string.
                                string DataString  = "";
                                string[] DataArray = LatestMessage.ToString().Split(',');
                                for (int i = 1; i < DataArray.Length; i++)
                                {
                                    DataString += DataArray[i];
                                }

                                // Add the message to the data grid, or overwrite its data.
                                if (OverwriteMessage)
                                {
                                    ReceivedOscData.RemoveAt(OverwriteMessageIndex);
                                    ReceivedOscData.Insert(OverwriteMessageIndex, new OscData()
                                    {
                                        Path = LatestMessage.Address, Data = DataString
                                    });
                                }
                                else
                                {
                                    ReceivedOscData.Add(new OscData()
                                    {
                                        Path = LatestMessage.Address, Data = DataString
                                    });
                                }
                            }
                        });
                    }
                }
            }
            catch (Exception Ex)
            {
                // Display the exeception if it occurred, while receiving.
                if (Receiver.State == OscSocketState.Connected)
                {
                    MessageBox.Show(Ex.Message, "Exception Occurred", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
        }
Ejemplo n.º 13
0
        static void StartLoop(OscReceiver oscReceiver)
        {
            // Create Moving Average objects for each data value (x, y, z, p, r, yw)
            //MovingAverage maX = new MovingAverage(5);
            //MovingAverage maY = new MovingAverage(5);
            //MovingAverage maZ = new MovingAverage(5);
            MovingAverage maP    = new MovingAverage(5);
            MovingAverage maR    = new MovingAverage(5);
            MovingAverage maYw   = new MovingAverage(5, true);
            OscPacket     packet = null;

            string[]     extractData;
            const string START_LINE             = "/position";
            const int    MAX_TIME_ELAPSED       = 10000; // 10 seconds
            bool         connectionNotification = true;
            Stopwatch    sw = new Stopwatch();

            // Attempt to establish an OSC connection
            try
            {
                // Start stopwatch
                sw.Start();

                do
                {
                    if (oscReceiver.State == OscSocketState.Connected)
                    {
                        if (connectionNotification)
                        {
                            Console.WriteLine("connection established");
                            connectionNotification = false;
                        }

                        // Attempt receive OSC packet
                        if (oscReceiver.TryReceive(out packet))
                        {
                            sw.Reset();
                            sw.Start();

                            // Extract position data from OSC packet
                            if (packet.ToString().StartsWith(START_LINE))
                            {
                                extractData = packet.ToString().Split(',');
                                //maX.SmoothOrientationData(extractData[2], Values.X);
                                //maY.SmoothOrientationData(extractData[3], Values.Y);
                                //maZ.SmoothOrientationData(extractData[4], Values.Z);
                                maP.SmoothOrientationData(extractData[5], Values.P);
                                maR.SmoothOrientationData(extractData[6], Values.R);
                                maYw.SmoothOrientationData(extractData[7], Values.Yw);
                            }
                        }
                    }
                } while (sw.ElapsedMilliseconds < MAX_TIME_ELAPSED);
                sw.Stop();
                Console.WriteLine("No OSC packets detected after {0} seconds", sw.ElapsedMilliseconds / 1000);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Ejemplo n.º 14
0
        public static string[] ParseOscPacket(OscPacket packet)
        {
            string[] msg = packet.ToString().Split(new string[] { ", " }, StringSplitOptions.None);;

            return(msg);
        }