示例#1
0
    void startServer()
    {
        Debug.Log("cs1\n\n");

        HandleOscPacket callback = delegate(OscPacket packet)
        {
            var messageReceived = (OscMessage)packet;
            var addr            = messageReceived.Address;
            if (addr == "/muse/eeg")
            {
                Debug.Log("EEG values: ");
                foreach (var arg in messageReceived.Arguments)
                {
                    Debug.Log(arg + " ");
                }
            }
            if (addr == "/muse/elements/alpha_relative")
            {
                Debug.Log("Relative Alpha power values: ");
                foreach (var arg in messageReceived.Arguments)
                {
                    Debug.Log(arg + " ");
                }
            }
        };

        Debug.Log("cs2\n\n");

        // Create an OSC server.
        var listener = new UDPListener(5000, callback);

        Debug.Log("cs2\n\n");
    }
示例#2
0
        public void TestCallback()
        {
            bool cbCalled = false;
            // The cabllback function
            HandleOscPacket cb = delegate(OscPacket packet)
            {
                var msg = (OscMessage)packet;
                Assert.AreEqual(2, msg.Arguments.Count);
                Assert.AreEqual(23, msg.Arguments[0]);
                Assert.AreEqual("hello world", msg.Arguments[1]);
                cbCalled = true;
            };

            var l1 = new UDPListener(55555, cb);

            var sender = new SharpOSC.UDPSender("localhost", 55555);
            var msg1   = new SharpOSC.OscMessage("/test/address", 23, "hello world");

            sender.Send(msg1);

            // Wait until callback processes its message
            var start = DateTime.Now;

            while (cbCalled == false && start.AddSeconds(2) > DateTime.Now)
            {
                Thread.Sleep(1);
            }

            Assert.IsTrue(cbCalled);

            l1.Close();
        }
    void Start()
    {
        // Callback function for received OSC messages.
        HandleOscPacket callback = delegate(OscPacket packet)
        {
            var messageReceived = (OscMessage)packet;
            var addr            = messageReceived.Address;

            if (addr == "Person0/notch_filtered_eeg")
            {
                /*
                 * Debug.Log("eeg START : ");
                 * foreach(var arg in messageReceived.Arguments) {
                 *      Debug.Log(float.Parse(arg.ToString()) + " ");
                 *
                 * }
                 */


                eeg_data[0] = float.Parse(messageReceived.Arguments[0].ToString());
                eeg_data[1] = float.Parse(messageReceived.Arguments[1].ToString());
                eeg_data[2] = float.Parse(messageReceived.Arguments[2].ToString());
                eeg_data[3] = float.Parse(messageReceived.Arguments[3].ToString());

                //CallbackAcc(eeg_data);
            }
        };

        // Create an OSC server.
        listener = new UDPListener(5005, callback);
        Console.WriteLine("Press enter to stop");
        Console.ReadLine();
    }
示例#4
0
    private void ThreadMethod()
    {
        HandleOscPacket callback = delegate(OscPacket packet)
        {
            var messageReceived = (OscMessage)packet;
            var addr            = messageReceived.Address;
            if (addr == "Person0/elements/alpha_relative")
            {
                for (int i = 0; i < messageReceived.Arguments.Count; i++)
                {
                    alpha[i] = (float)messageReceived.Arguments[i];
                }
            }
            else if (addr == "Person0/elements/beta_relative")
            {
                for (int i = 0; i < messageReceived.Arguments.Count; i++)
                {
                    beta[i] = (float)messageReceived.Arguments[i];
                }
            }
        };

        var listener = new UDPListener(5000, callback);
        // listener.Close();
    }
示例#5
0
        public void setupOSC(int _localPort, string _remoteHost, int _remotePort)
        {
            localPort  = _localPort;
            remoteHost = _remoteHost;
            remotePort = _remotePort;
            if (listener != null)
            {
                listener.Close();
            }

            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var messageReceived = (OscMessage)packet;
                if (messageReceived != null)
                {
                    Console.WriteLine("Received a message! " + messageReceived.Address);
                }
            };

            listener = new UDPListener(localPort, processMessage);

            sender = new UDPSender(remoteHost, remotePort);

            sendCurrentSlide();
            sendTotalSlides();
        }
示例#6
0
        private void OSCMonitor_Load(object sender, EventArgs e)
        {
            clearMessages();
            // The cabllback function
            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var       messageReceived = (OscBundle)packet;
                OscBundle bundle          = (OscBundle)packet;
                DateTime  dt = SharpOSC.Utils.TimetagToDateTime(bundle.Timetag);
                foreach (OscMessage message in bundle.Messages)
                {
                    String text;
                    if (checkBoxUTC.Checked)
                    {
                        text = dt.ToString("yyyy-MM-dd HH:mm:ss.fff tt") + " UTC";
                    }
                    else
                    {
                        text = dt.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss.fff tt") + " Local";
                    }
                    text += " " + message.Address;
                    if (message.Arguments.Count > 0)
                    {
                        text += " [" + message.Arguments.First().ToString() + "]";
                    }
                    if (message.Arguments.Count > 1)
                    {
                        foreach (object obj in message.Arguments.Skip(1))
                        {
                            text += ", [" + obj.ToString() + "]";
                        }
                    }

                    if (stream)
                    {
                        messages.Add(text);
                    }
                    else
                    {
                        if (messageDict.ContainsKey(message.Address))
                        {
                            messageDict[message.Address] = text;
                        }
                        else
                        {
                            messageDict.Add(message.Address, text);
                        }
                    }
                }

                updateMessageBox();
            };

            listener = new UDPListener(5000, callback);
        }
示例#7
0
        private Singleton()
        {
            // The cabllback function
            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var messageReceived = (OscBundle)packet;
                MessageReceived?.Invoke(messageReceived);
            };

            _listener = new UDPListener(1234, callback);
        }
示例#8
0
    void OSCListen()
    {
        isOSCListning = true;

        HandleOscPacket callback = delegate(OscPacket packet) {
            var message = (OscMessage)packet;

            msgQueue.AddMessage(message);
        };

        var listener = new UDPListener(55555, callback);
    }
示例#9
0
    private static float[] acc_recent = { 0.0f, 0.0f, 0.0f };                           // Most recently recorded acc data

    void Start()
    {
        // Callback function for received OSC messages.
        HandleOscPacket callback = delegate(OscPacket packet)
        {
            var messageReceived = (OscMessage)packet;
            var addr            = messageReceived.Address;
            if (addr == "/muse/acc")
            {
                //head position and accleration
                float[] acc_data =
                {
                    (float)messageReceived.Arguments[0],
                    (float)messageReceived.Arguments[1],
                    (float)messageReceived.Arguments[2]
                };
                CallbackAcc(acc_data);
            }

            else if (addr == "/muse/elements/blink")
            {
                blinks = (int)messageReceived.Arguments[0];
            }

            else if (addr == "/muse/elements/jaw_clench")
            {
                int clench = (int)messageReceived.Arguments[0];
                clenches += clench;
                if (clenches >= jaw_lim)
                {
                    jaw++;
                    clenches = 0;
                }
            }

            else if (addr == "/muse/elements/experimental/concentration")
            {
                concentration = (float)messageReceived.Arguments[0];
            }

            if (addr == "/muse/batt")
            {
                if (battery != (int)messageReceived.Arguments[0])
                {
                    battery = (int)messageReceived.Arguments[0];
                }
            }
        };

        // Create an OSC server.
        listener = new UDPListener(5000, callback);
    }
示例#10
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var message = ( OscMessage )packet;
                MOUSE_X      = Int32.Parse(message.Arguments[0].ToString());
                MOUSE_Y      = Int32.Parse(message.Arguments[1].ToString());
                TIP_VELOCITY = Int32.Parse(message.Arguments[2].ToString());
            };

            listener = new UDPListener(55555, callback);

            base.Initialize();
        }
示例#11
0
文件: Program.cs 项目: io0/WinMuseEEG
        static void Main(string[] args)
        {
            // Callback function for received OSC messages.
            // Prints EEG and Relative Alpha data only.
            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var messageReceived = (OscMessage)packet;
                var addr            = messageReceived.Address;
                if (addr == "/muse/eeg")
                {
                    //					Console.Write("EEG values: ");
                    var eeg = new Eeg();
//					foreach (var arg in messageReceived.Arguments)
//					{
//						Console.Write(arg + " ");


//					}
                    OnEeg(this, new EegEventArgs()
                    {
                        Eeg = messageReceived.Arguments
                    });
                }
//				if (addr == "/muse/elements/alpha_relative")
//				{
//					Console.Write("Relative Alpha power values: ");
//					foreach (var arg in messageReceived.Arguments)
//					{
//						Console.Write(arg + " ");
//					}
//				}
            };

            // Create an OSC server.
            var listener = new UDPListener(5000, callback);

            Console.WriteLine("Press enter to stop");
            Console.ReadLine();
            listener.Close();
        }
示例#12
0
        static void Main(string[] args)
        {
            /*var message = new SharpOSC.OscMessage("/Knob", 0.5f);
             * var sender = new SharpOSC.UDPSender("127.0.0.1", 10000);
             *
             * while (true)
             * {
             *      var inp = Console.ReadLine();
             *      float f = Convert.ToSingle(inp);
             *      message.Arguments[0] = f;
             *      sender.Send(message);
             * }*/

            HandleOscPacket cb = delegate(OscPacket packet)
            {
                var msg = ((OscBundle)packet).Messages[0];
                Console.WriteLine(msg.Arguments[0].ToString());
            };

            var l1 = new UDPListener(10001, cb);

            Console.ReadLine();
        }
示例#13
0
 public UDPListener(int port, HandleOscPacket callback) : this(port)
 {
     this.OscPacketCallback = callback;
 }
示例#14
0
        public static void Main(string[] args)
        {
            // Get a handle to the Calculator application. The window class
            // and window name were obtained using the Spy++ tool.
            IntPtr calculatorHandle = FindWindow(null, "Calculator");

            // Verify that Calculator is a running process.
            if (calculatorHandle == IntPtr.Zero)
            {
                MessageBox.Show("Calculator is not running.");
                return;
            }
            Button button1 = new Button();
            int    i       = 0;
            //string filePath = @"c:\temp\test.txt";
            // Callback function for received OSC messages.
            // Prints EEG and Relative Alpha data only.
            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var messageReceived = (OscMessage)packet;
                var addr            = messageReceived.Address;
                if (addr == "/muse/elements/blink")
                {
                    foreach (var arg in messageReceived.Arguments)
                    {
                        if (Convert.ToInt32(arg) == 1)
                        {
                            Console.WriteLine("counter: " + i);
                            Console.WriteLine("1 Blink Detected");

                            if (i <= 6 && i >= 2)
                            {
                                Console.Write("Double Blink Detected");
                                SetForegroundWindow(calculatorHandle);
                                SendKeys.SendWait("111");
                                SendKeys.SendWait("*");
                                SendKeys.SendWait("11");
                                SendKeys.SendWait("=");
                            }
                            else
                            {
                                Console.Write("Double Blink Not Deteced");
                            }
                            i = 0;
                            Console.WriteLine("Stopwatch Reset");
                        }
                        else
                        {
                            i = i + 1;
                            Console.WriteLine("Not Blink: " + i);
                        }
                    }
                }
            };

            // Create an OSC server.
            var listener = new UDPListener(5000, callback);

            Console.WriteLine("Press enter to stop");
            Console.ReadLine();
            listener.Close();
        }
示例#15
0
        static void Main(string[] args)
        {
            // OSC message/bundle callback handler.
            // In this example it just outputs all the sent responses and arguments to the console.
            HandleOscPacket packetCallback = delegate(OscPacket packet)
            {
                if (packet is OscMessage)
                {
                    var           message = packet as OscMessage;
                    StringBuilder builder = new StringBuilder();
                    builder.AppendLine(message.Address);
                    foreach (var argument in message.Arguments)
                    {
                        builder.AppendFormat(" {0} ", argument);
                    }
                    builder.AppendLine();
                    Console.WriteLine(builder.ToString());
                }
                else if (packet is OscBundle)
                {
                    StringBuilder builder = new StringBuilder();
                    var           bundle  = packet as OscBundle;
                    foreach (var message in bundle.Messages)
                    {
                        builder.AppendLine(message.Address);
                        foreach (var argument in message.Arguments)
                        {
                            builder.AppendFormat(" {0} ", argument);
                        }
                        builder.AppendLine();
                        Console.WriteLine(builder.ToString());
                    }
                }
            };

            // Create a OSC message listener object, lets print out all qtm server replies in a callback method
            var listener = new UDPListener(55555, packetCallback);

            // Create a OSC message sender object
            var sender = new SharpOSC.UDPSender("127.0.0.1", 22225);

            // Connect
            sender.Send(new SharpOSC.OscMessage("/qtm", "connect", 55555));

            // Ask for QTM version
            sender.Send(new SharpOSC.OscMessage("/qtm", "qtmversion"));

            // Ask for general camera system and 3d marker parameters (returned as xml)
            sender.Send(new SharpOSC.OscMessage("/qtm", "getparameters", "General", "3d"));

            // Start streaming of frames (just 3d and 6dof data)
            sender.Send(new SharpOSC.OscMessage("/qtm", "StreamFrames", "AllFrames", "3d", "6d"));

            // Pressing the escape key will stop streaming and disconnect from qtm
            while (true)
            {
                if (Console.KeyAvailable)
                {
                    if (Console.ReadKey(false).Key == ConsoleKey.Escape)
                    {
                        break;
                    }
                }
            }

            // Stop streaming
            sender.Send(new SharpOSC.OscMessage("/qtm", "StreamFrames", "Stop"));

            // Disconnect from qtm
            sender.Send(new SharpOSC.OscMessage("/qtm", "disconnect"));
        }
示例#16
0
        /*
         * public void DoThisAllTheTime()
         * {
         *  var listener = new UDPListener(55555);
         *  //MessageBox.Show("Starting OSC Listener");
         *  label1.Text = "Starting OSC Listener";
         *  OscMessage messageReceived = null;
         *  while (messageReceived == null)
         *  {
         *      messageReceived = (OscMessage)listener.Receive();
         *      Thread.Sleep(1);
         *  }
         *  label1.Text = "Received a message!";
         *  MessageBox.Show("Received a message!");
         *
         * }
         */


        public void Form1_Load(object sender, EventArgs e)
        {
            Run = true;
            //t = new System.Threading.Thread(DoThisAllTheTime);
            //t.Start();

            //Clear labels.
            label1.Invoke((MethodInvoker)(() => label1.Text = ""));
            label_single.Invoke((MethodInvoker)(() => label_single.Text = ""));
            label_x.Invoke((MethodInvoker)(() => label_x.Text = ""));
            label_y.Invoke((MethodInvoker)(() => label_y.Text = ""));
            label_status.Invoke((MethodInvoker)(() => label_status.Text = ""));


            InitTimer();

            HandleOscPacket callback = delegate(OscPacket packet)
            {
                //Console.WriteLine("oscPacket");
                var messageReceived = (OscMessage)packet;
                if (messageReceived == null)
                {
                    return;
                }

                if (messageReceived.Address != null)
                {
                    Console.WriteLine(messageReceived.Address);
                    label1.Invoke((MethodInvoker)(() => label1.Text = messageReceived.Address));

                    string[] addressParts = messageReceived.Address.Split('/');

                    Dictionary <string, float> msgVars = new Dictionary <string, float>();



                    //Console.WriteLine(addressParts[1]);

                    if (messageReceived.Address.Contains("/z") || messageReceived.Address.Contains("nvm"))
                    {
                        //label_status.Invoke((MethodInvoker)(() => label_status.Text = "end string, no action"));
                        return;
                    }
                    else if (messageReceived.Address.Contains("keyboard"))//remote program calls
                    {
                        //Console.WriteLine("keyboard");
                        //Console.WriteLine(addressParts[2]);
                        SendKeys.SendWait(addressParts[2]);
                        return;
                    }
                    else if (messageReceived.Address.Contains("osc"))//remote program calls
                    {
                        //label_status.Invoke((MethodInvoker)(() => label_status.Text = "end string, no action"));
                        //Console.WriteLine("osc command");
                        switch (addressParts[2])
                        {
                        case "sync":
                            //Console.WriteLine("osc sync");
                            //Form1.invoke((MethodInvoker)(Sync()));
                            this.Invoke((MethodInvoker) delegate { Sync(); });
                            break;
                        }

                        return;
                    }
                    else if (addressParts.Count() < 4)
                    {
                        return;
                    }
                    else
                    {
                        //Console.WriteLine(addressParts[1]);
                        switch (addressParts[1])
                        {
                        case "Slider":
                            addressParts[1] = "Strip";
                            break;

                        case "keyboard":
                            Console.WriteLine("keyboard");
                            Console.WriteLine(addressParts[2]);
                            SendKeys.SendWait(addressParts[2]);
                            break;
                        }
                        //Console.WriteLine(messageReceived.Arguments.Count.ToString());
                        //label_status.Invoke((MethodInvoker)(() => label_status.Text = messageReceived.Arguments.Count.ToString()));

                        switch (addressParts[3])
                        {
                        case "fxy":
                            if (messageReceived.Arguments.Count == 2)
                            {
                                label_single.Invoke((MethodInvoker)(() => label_single.Text = ""));

                                msgVars.Add("fx_x", (float)messageReceived.Arguments[1]);
                                label_x.Invoke((MethodInvoker)(() => label_x.Text = ((float)messageReceived.Arguments[1] - (float)0.5).ToString()));

                                msgVars.Add("fx_y", ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1, (float)messageReceived.Arguments[0]));
                                label_y.Invoke((MethodInvoker)(() => label_y.Text = messageReceived.Arguments[0].ToString()));
                            }
                            else
                            {
                                msgVars.Add("fx_x", (float)0);
                                msgVars.Add("fx_y", (float)0);
                            }
                            break;

                        case "Color": label_single.Invoke((MethodInvoker)(() => label_single.Text = ""));
                            if (messageReceived.Arguments.Count == 2)
                            {
                                label_single.Invoke((MethodInvoker)(() => label_single.Text = ""));

                                msgVars.Add(addressParts[3] + "_x", (float)messageReceived.Arguments[1]);
                                label_x.Invoke((MethodInvoker)(() => label_x.Text = ((float)messageReceived.Arguments[1]).ToString()));

                                if (Convert.ToInt32(addressParts[2]) > 4)
                                {
                                    msgVars.Add(addressParts[3] + "_y", (float)messageReceived.Arguments[0] - (float)1);
                                    label_y.Invoke((MethodInvoker)(() => label_y.Text = messageReceived.Arguments[0].ToString()));
                                }
                                else
                                {
                                    msgVars.Add(addressParts[3] + "_y", ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1, (float)messageReceived.Arguments[0]));
                                    label_y.Invoke((MethodInvoker)(() => label_y.Text = ((float)messageReceived.Arguments[0]).ToString()));
                                }
                            }
                            else
                            {
                                msgVars.Add(addressParts[3] + "_x", (float)0);
                                msgVars.Add(addressParts[3] + "_y", (float)0);
                            }
                            break;

                        case "Pan":
                            if (messageReceived.Arguments.Count == 2)
                            {
                                label_single.Invoke((MethodInvoker)(() => label_single.Text = ""));


                                if (addressParts[2] == "5" || addressParts[2] == "6" || addressParts[2] == "7")
                                {
                                    //Console.WriteLine("5, 6, OR 7!!!!!!!! "+ ConvertRange((float)-1, (float)1, (float)-0.5, (float)0.5, (float)messageReceived.Arguments[1]).ToString() +" -- " + ConvertRange((float)-1, (float)1, (float)-0.5, (float)0.5, (float)messageReceived.Arguments[0]).ToString());
                                    msgVars.Add(addressParts[3] + "_x", ConvertRange((float)-1, (float)1, (float)-0.5, (float)0.5, (float)messageReceived.Arguments[1]));
                                    label_x.Invoke((MethodInvoker)(() => label_x.Text = ((float)messageReceived.Arguments[1]).ToString()));
                                    msgVars.Add(addressParts[3] + "_y", ConvertRange((float)-1, (float)1, (float)-0.5, (float)0.5, (float)messageReceived.Arguments[0]));
                                    label_y.Invoke((MethodInvoker)(() => label_y.Text = messageReceived.Arguments[0].ToString()));
                                }
                                else
                                {
                                    Console.WriteLine("pan");
                                    msgVars.Add(addressParts[3] + "_x", (float)messageReceived.Arguments[1]);
                                    //msgVars.Add(addressParts[3] + "_x", ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1, (float)messageReceived.Arguments[1]));
                                    label_x.Invoke((MethodInvoker)(() => label_x.Text = ((float)messageReceived.Arguments[1] - (float)0.5).ToString()));
                                    //msgVars.Add(addressParts[3] + "_y", (float)messageReceived.Arguments[0] );
                                    msgVars.Add(addressParts[3] + "_y", ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1, (float)messageReceived.Arguments[0]));
                                    label_y.Invoke((MethodInvoker)(() => label_y.Text = messageReceived.Arguments[0].ToString()));
                                }
                            }
                            else
                            {
                                msgVars.Add(addressParts[3] + "_x", (float)0);
                                msgVars.Add(addressParts[3] + "_y", (float)0);
                            }
                            break;

                        default:
                            msgVars.Add(addressParts[3], (float)messageReceived.Arguments[0]);
                            label_single.Invoke((MethodInvoker)(() => label_single.Text = messageReceived.Arguments[0].ToString()));

                            label_x.Invoke((MethodInvoker)(() => label_x.Text = ""));
                            label_y.Invoke((MethodInvoker)(() => label_y.Text = ""));

                            break;
                        }

                        if (messageReceived.Address.Contains("reset") || messageReceived.Address.Contains("Reset"))
                        {
                            //Console.WriteLine("RESET!");
                            foreach (KeyValuePair <string, float> entry in msgVars)
                            {
                                //Console.WriteLine(entry.Key.ToString() + " - " + entry.Value.ToString());
                                vm.SetParam(addressParts[1] + "[" + addressParts[2] + "]." + entry.Key, (float)0);
                            }

                            var message = new SharpOSC.OscMessage("/" + addressParts[1] + "/" + addressParts[2] + "/" + addressParts[3], (float)0, (float)0.5);

                            if (addressParts[2] == "5" || addressParts[2] == "6" || addressParts[2] == "7")
                            {
                                message = new SharpOSC.OscMessage("/" + addressParts[1] + "/" + addressParts[2] + "/" + addressParts[3], (float)0, (float)0);
                            }


                            oscSender.Send(message);

                            if (addressParts[1] == "Strip")
                            {
                                if (addressParts[2] == "5" || addressParts[2] == "6" || addressParts[2] == "7")
                                {
                                    message = new SharpOSC.OscMessage("/Slider/" + addressParts[2] + "/" + addressParts[3], (float)0, (float)0);
                                }
                                else
                                {
                                    message = new SharpOSC.OscMessage("/Slider/" + addressParts[2] + "/" + addressParts[3], (float)-0.5, (float)0);
                                }
                                oscSender.Send(message);
                            }
                        }
                        else
                        {
                            // float tmpFloat = 0;
                            foreach (KeyValuePair <string, float> entry in msgVars)
                            {
                                //Console.WriteLine(entry.Key.ToString() + " - " + entry.Value.ToString());
                                //   tmpFloat = (float)entry.Value;
                                vm.SetParam(addressParts[1] + "[" + addressParts[2] + "]." + entry.Key, (float)entry.Value);
                                //var message = new SharpOSC.OscMessage(messageReceived.Address, (float)entry.Value);
                                //oscSender.Send(new SharpOSC.OscMessage(messageReceived.Address, (float)entry.Value));
                                //message = new SharpOSC.OscMessage(messageReceived.Address + "/Text", (float)entry.Value);
                                //oscSender.Send(new SharpOSC.OscMessage(messageReceived.Address + "/Text", (float)entry.Value));
                            }
                        }
                    }

                    /*
                     * if (messageReceived.Address.Contains("nvm"))
                     * {
                     *   //don't do anything
                     * }
                     * else if (messageReceived.Address.Contains("Color"))
                     * {
                     *  vm.SetParam(addressParts[1] + "[" + addressParts[2] + "]." + addressParts[3] + "_y", (float)messageReceived.Arguments[0]);
                     *  vm.SetParam(addressParts[1] + "[" + addressParts[2] + "]." + addressParts[3] + "_x", (float)messageReceived.Arguments[1] - (float)0.5);
                     *  label_status.Invoke((MethodInvoker)(() => label_status.Text = messageReceived.Arguments[0].ToString() + " - " + messageReceived.Arguments[0].ToString()));
                     * }
                     * else
                     * {
                     *   if (messageReceived.Address.Contains("reset"))
                     *   {
                     *       vm.SetParam(addressParts[1]+"[" + addressParts[2] + "]." + addressParts[3] , 0);
                     *   }
                     *   else
                     *   {
                     *       foreach (float test in messageReceived.Arguments)
                     *       {
                     *           //label_status.Invoke((MethodInvoker)(() => label_status.Text = test.ToString()));
                     *           label_status.Invoke((MethodInvoker)(() => label_status.Text = addressParts[1] + "[" + addressParts[2] + "]." + addressParts[3]));
                     *           vm.SetParam(addressParts[1] + "[" + addressParts[2] + "]." + addressParts[3], test);
                     *       }
                     *   }
                     *
                     * }
                     */
                }

                return;
            };


            var listener = new UDPListener(Properties.Settings.Default.portIn, callback);
            //MessageBox.Show("Starting OSC Listener");
        }
示例#17
0
 public UDPListener(int port, HandleOscPacket callback)
     : this(port)
 {
     this.OscPacketCallback = callback;
 }
示例#18
0
    // Use this for initialization
    void Start()
    {
        // Callback function for received OSC messages.
        // Prints EEG and Relative Alpha data only.
        HandleOscPacket callback = delegate(OscPacket packet)
        {
            // Get the current field type based on player progress
            FieldType currentFieldType = fieldTypes[playerProgress];

            var messageReceived = (OscMessage)packet;
            var addr            = messageReceived.Address;

            /**
             * BLINK CONTROLLER
             */
            if (currentFieldType == FieldType.APPLE || currentFieldType == FieldType.ORANGE)
            {
                const int BLINK_AVERAGE         = 890;
                const int BLINK_UPPER_THRESHOLD = 1400;
                const int BLINK_LOWER_THRESHOLD = 200;
                const int MIN_BLINK_TIME        = 750;

                if (addr == "/muse/eeg")
                {
                    int current = Convert.ToInt32(messageReceived.Arguments[1]);

                    Direction currentFront = current > BLINK_AVERAGE ? Direction.UP : Direction.DOWN;

                    bool thresholdPassed    = current > BLINK_UPPER_THRESHOLD || current < BLINK_LOWER_THRESHOLD;
                    bool blinkChangingFront = previousFront != currentFront;

                    if (blinkChangingFront)
                    {
                        frontNotRegistered = true;
                    }

                    // How much time has passed from the start of the command
                    TimeSpan timeFromCommandStart = DateTime.Now - commandStartTime;

                    // Make sure enough time has passed from last action to not count the same one twice
                    TimeSpan timeFromLastAction       = DateTime.Now - lastActionTime;
                    bool     enoughTimeFromLastAction = timeFromLastAction > TimeSpan.FromMilliseconds(MIN_BLINK_TIME);

                    // Register only if the current front direction is downwards
                    if (thresholdPassed && frontNotRegistered && currentFront == Direction.DOWN && enoughTimeFromLastAction)
                    {
                        if (timeFromCommandStart < TimeSpan.FromMilliseconds(commandTimeout))
                        {
                            // If still part of the same command sequence
                            blinkCounter += 1;
                        }
                        else
                        {
                            // The command has timed out and we start a new command
                            blinkCounter     = 1;
                            commandStartTime = DateTime.Now;
                        }
                        // In any event we have to reset the front registered
                        frontNotRegistered = false;
                        lastActionTime     = DateTime.Now;
                    }

                    // When the time from command start is larger than timeout, end the command
                    if (timeFromCommandStart > TimeSpan.FromMilliseconds(commandTimeout) && blinkCounter > 1)
                    {
                        Debug.Log(name + " blinked " + blinkCounter + " times.");

                        if (
                            blinkCounter >= 2 && currentFieldType == FieldType.APPLE ||
                            blinkCounter >= 3 && currentFieldType == FieldType.ORANGE
                            )
                        {
                            nextMove();
                            if (fruitCounter == 0)
                            {
                                canSee[0] = 0;
                            }
                            else if (fruitCounter == 1)
                            {
                                canSee[1] = 0;
                            }
                            else
                            {
                                canSee[2] = 0;
                            }
                            fruitCounter++;
                        }

                        blinkCounter = 0;
                    }

                    previousFront = currentFront;
                    lastBlinkTime = DateTime.Now;
                }
            }

            /**
             * PUSHUP CONTROLLER
             */
            else if (currentFieldType == FieldType.NORMAL)
            {
                const int PU_AVERAGE         = 850;
                const int PU_UPPER_THRESHOLD = 1200;
                const int PU_LOWER_THRESHOLD = 200;
                const int MIN_PU_TIME        = 1200;

                if (addr == "/muse/acc")
                {
                    int current = Convert.ToInt32(messageReceived.Arguments[0]);

                    Direction currentFront = current > PU_AVERAGE ? Direction.UP : Direction.DOWN;

                    bool thresholdPassed    = current > PU_UPPER_THRESHOLD || current < PU_LOWER_THRESHOLD;
                    bool blinkChangingFront = PUpreviousFront != currentFront;

                    if (blinkChangingFront)
                    {
                        PUfrontNotRegistered = true;
                    }

                    // Make sure enough time has passed from last PU to not count the same one twice
                    TimeSpan timeFromLastPU       = DateTime.Now - lastActionTime;
                    bool     enoughTimeFromLastPU = timeFromLastPU > TimeSpan.FromMilliseconds(MIN_PU_TIME);

                    // Register only if the current front direction is downwards
                    if (thresholdPassed && PUfrontNotRegistered && currentFront == Direction.DOWN)
                    {
                        if (enoughTimeFromLastPU)
                        {
                            //PUcounter += 1;
                            nextMove();
                            Debug.Log(name + " did a push up.");
                            lastActionTime = DateTime.Now;
                        }
                        PUfrontNotRegistered = false;
                    }

                    previousFront = currentFront;
                }
            }
        };

        // Create an OSC server.
        listener = new UDPListener(port, callback);
    }
示例#19
0
        public Main()
        {
            InitializeComponent();

            trackBars = new TrackBar[]
            {
                trackBar1,
                trackBar2,
                trackBar3,
                trackBar4,
                trackBar5,
                trackBar6,
                trackBar7,
                trackBar8
            };

            labels = new Label[]
            {
                label1,
                label2,
                label5,
                label6,
                label7,
                label8,
                label9,
                label10
            };

            HandleOscPacket callback = delegate(OscPacket packet)
            {
                if (packet is OscMessage)
                {
                    var msg = (OscMessage)packet;
                    if (msg.Address == "/dmx")
                    {
                        messageQueue.Enqueue(msg);
                    }
                }
                else if (packet is OscBundle)
                {
                    var bundle = (OscBundle)packet;
                    foreach (OscMessage msg in bundle.Messages)
                    {
                        if (msg.Address == "/dmx")
                        {
                            messageQueue.Enqueue(msg);
                        }
                    }
                }
            };

            updateThread = new Thread(delegate()
            {
                OscMessage message;
                while (true)
                {
                    if (messageQueue.Count > 0)
                    {
                        message = messageQueue.Dequeue();
                        if (message != null && OpenDMX.status == FT_STATUS.FT_OK)
                        {
                            int channels = Math.Min(message.Arguments.Count, OpenDMX.UNIVERSE_SIZE);
                            for (int i = 0; i < channels; i++)
                            {
                                try
                                {
                                    float value  = Convert.ToSingle(message.Arguments[i]);
                                    byte byteVal = (byte)(value * 255);
                                    OpenDMX.setDmxValue(i + 1, byteVal);

                                    mostRecentData[i] = byteVal;
                                }
                                catch (Exception)
                                {
                                }
                            }

                            OpenDMX.streamData();
                        }
                    }
                }
            }
                                      );
            updateThread.Start();

            listener = new UDPListener(7000, callback);

            refreshTimer.Interval = 500; //ms
            refreshTimer.Tick    += new EventHandler(timer_Tick);
            refreshTimer.Start();
        }
示例#20
0
        public static void Main(string[] args)
        {
            // Get a handle to the Calculator application. The window class
            // and window name were obtained using the Spy++ tool.
            IntPtr calculatorHandle = FindWindow(null, "Calculator");

            // Verify that Calculator is a running process.
            if (calculatorHandle == IntPtr.Zero)
            {
                MessageBox.Show("Calculator is not running.");
                return;
            }
            Button button1 = new Button();
            int    i       = 0;
            //string filePath = @"c:\temp\test.txt";
            // Callback function for received OSC messages.
            // Prints EEG and Relative Alpha data only.
            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var messageReceived = (OscMessage)packet;
                var addr            = messageReceived.Address;
                // if(addr == "/muse/elements/jaw_clench (0)") {
                //  Console.Write("Jaw clench values: ");
                //  foreach(var arg in messageReceived.Arguments) {
                //      Console.Write(arg + " ");
                //  }
                // }
                if (addr == "/muse/elements/blink")
                {
                    //Stopwatch stopwatch = new Stopwatch();
                    //TimeSpan ts = new TimeSpan();

                    //stopwatch.Start();

                    foreach (var arg in messageReceived.Arguments)
                    {
                        if (Convert.ToInt32(arg) == 1)
                        {
                            Console.WriteLine("counter: " + i);
                            Console.WriteLine("1 blink");
                            //stopwatch.Stop();
                            //ts = stopwatch.Elapsed;
                            //ts.ToString("mm\\:ss\\.ff");
                            //Console.WriteLine("Elapsed:" + ts);
                            //Console.WriteLine(stopwatch.ElapsedMilliseconds);


                            if (i <= 6 && i >= 2)
                            {
                                Console.Write("+ DOUBLE BLINK");
                                SetForegroundWindow(calculatorHandle);
                                SendKeys.SendWait("111");
                                SendKeys.SendWait("*");
                                SendKeys.SendWait("11");
                                SendKeys.SendWait("=");
                                //button1.Click += new EventHandler(button1_Click);
                                //0xB3
                                //SendMessage(0xffff, 0xB3, );
                                //Rectangle bounds = this.Bounds;
                                //using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
                                //{
                                //    using (Graphics g = Graphics.FromImage(bitmap))
                                //    {
                                //        g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
                                //    }
                                //    bitmap.Save("C://test.jpg", ImageFormat.Jpeg);
                                //}
                                //Process.Start(@"c:\temp\test.txt");

                                //File.Open(filePath, FileMode.Open, FileAccess.Read);
                            }
                            else
                            {
                                Console.Write("+ FAIL!!!!!");
                            }
                            //stopwatch.Reset();
                            i = 0;
                            Console.WriteLine("Stopwatch Reset");
                            //stopwatch.Start();
                        }
                        else
                        {
                            i = i + 1;
                            Console.WriteLine("Not Blink: " + i);
                        }
                    }
                }
            };

            // Create an OSC server.
            var listener = new UDPListener(5000, callback);

            Console.WriteLine("Press enter to stop");
            Console.ReadLine();
            listener.Close();
        }
示例#21
0
        static void Main(string[] args)
        {
            // VIRTUAL GAMEPAD INITIALIZATION
            Console.WriteLine("[PAD] Initializing gamepad");
            joystick = new vJoy();
            iReport  = new vJoy.JoystickState();

            if (!joystick.vJoyEnabled())
            {
                Console.WriteLine("[PAD] vJoy driver not enabled!");
                return;
            }
            else
            {
                Console.WriteLine("[PAD] Vendor: {0}\n[PAD] Product :{1}\n[PAD] Version Number:{2}", joystick.GetvJoyManufacturerString(), joystick.GetvJoyProductString(), joystick.GetvJoySerialNumberString());
            }

            VjdStat status = joystick.GetVJDStatus(id);

            int nButtons = joystick.GetVJDButtonNumber(id);

            if (nButtons < 7)
            {
                Console.WriteLine("[PAD] This app needs at least 7 buttons configured in vJoy to work.");
                return;
            }
            else
            {
                Console.WriteLine("[PAD] Available buttons: " + nButtons);
            }

            bool sliderR = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_SL0);
            bool sliderL = joystick.GetVJDAxisExist(id, HID_USAGES.HID_USAGE_SL1);

            if (sliderR && sliderL)
            {
                Console.WriteLine("[PAD] Sliders enabled");
            }
            else
            {
                Console.WriteLine("[PAD] This app needs at least 2 sliders configured in vJoy to work.");
                return;
            }

            if ((status == VjdStat.VJD_STAT_OWN) || ((status == VjdStat.VJD_STAT_FREE) && (!joystick.AcquireVJD(id))))
            {
                Console.WriteLine("[PAD] Failed to acquire vJoy device number {0}.", id);
                return;
            }
            else
            {
                Console.WriteLine("[PAD] Acquired: vJoy device number {0}.", id);
            }

            HandleOscPacket callback = delegate(OscPacket packet)
            {
                var    messageReceived = (OscMessage)packet;
                string addr            = messageReceived.Address;
                string content         = messageReceived.Arguments[0].ToString();

                switch (messageReceived.Address)
                {
                case "/btn-a":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 1);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 1);
                    }
                    break;

                case "/btn-b":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 2);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 2);
                    }
                    break;

                case "/btn-c":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 3);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 3);
                    }
                    break;

                case "/btn-d":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 4);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 4);
                    }
                    break;

                case "/fx-l":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 5);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 5);
                    }
                    break;

                case "/fx-r":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 6);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 6);
                    }
                    break;

                case "/start":
                    if (content == "P")
                    {
                        joystick.SetBtn(true, id, 7);
                    }
                    if (content == "R")
                    {
                        joystick.SetBtn(false, id, 7);
                    }
                    break;

                case "/vol-l":
                    //lastL = currL;
                    //currL = float.Parse(content);
                    //float deltaL = lastL - currL;
                    //L -= deltaL;

                    int lPos = int.Parse(content);

                    joystick.SetAxis(lPos * 400, id, HID_USAGES.HID_USAGE_SL0);
                    break;

                case "/vol-r":
                    // lastR = currR;
                    // currR = float.Parse(content);
                    // float deltaR = lastR - currR;
                    // R -= deltaR;

                    int rPos = int.Parse(content);

                    joystick.SetAxis(rPos * 400, id, HID_USAGES.HID_USAGE_SL1);
                    break;
                }
                // Console.WriteLine("[OSC] Message Received: Address:" + messageReceived.Address + ", args: " + messageReceived.Arguments[0]);
            };

            var listener = new UDPListener(32000, callback);

            Console.WriteLine("[OSC] Now listening to messages.");
            Console.WriteLine("[OSC] Press enter to stop");
            Console.ReadLine();
            listener.Close();
        }