Send() public method

public Send ( OscPacket packet ) : void
packet OscPacket
return void
示例#1
0
    // Function to send Msg to Linux
    void sendPos_polar(GameObject sound_sphere)
    {
        // x and z for plane, y is height
        float pos_x = sound_sphere.GetComponent <Transform> ().position.x;
        float pos_y = sound_sphere.GetComponent <Transform> ().position.y;
        float pos_z = sound_sphere.GetComponent <Transform> ().position.z;

        float vol = sound_sphere.GetComponent <Transform>().localScale.x;

        float rad = Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z + (pos_y - 1.6f) * (pos_y - 1.6f));
        float azi = Mathf.Atan2(pos_x, pos_z) * 180 / Mathf.PI;
        float ele = Mathf.Atan2(pos_y - 1.6f, Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z)) * 180 / Mathf.PI;

        if (rad != 0f)
        {
            vol = vol / rad;
        }


        //Debug.Log(pos_x);
        //Debug.Log(pos_y);
        //Debug.Log(pos_z);
        //Debug.Log(vol);

        var msg_azi = new SharpOSC.OscMessage("/0x00/azi", azi);
        var msg_ele = new SharpOSC.OscMessage("/0x00/ele", ele);
        var msg_vol = new SharpOSC.OscMessage("/0x00/gain", vol);

        sender.Send(msg_azi);
        sender.Send(msg_ele);
        sender.Send(msg_vol);
    }
示例#2
0
        public string update_enter(Dictionary <string, object> parameters)
        {
            try
            {
                double dur    = (double)parameters["dur"];
                int    state  = (int)parameters["state"];
                string label  = (string)parameters["label"];
                string scheme = (string)parameters["scheme"];
                double time   = (double)parameters["time"];


                if (library == OSCLibrary.SharpOSC)
                {
                    var message = new SharpOSC.OscMessage("/evnt", scheme, label, (Int32)(time * 1000), (Int32)(dur * 1000), (Int32)state, (Int32)0);
                    sharposcclient.Send(message);
                }
                else
                {
                    OscElement message = new OscElement("/evnt", scheme, label, (Int32)(time * 1000), (Int32)(dur * 1000), (Int32)state, (Int32)0);
                    ventuzclient.Send(message);
                }
            }
            catch (Exception ex)
            {
                return(ex.ToString());
            }

            return(null);
        }
示例#3
0
 public void sendMessages(UDPSender sender)
 {
     if (register.xPos_status)
     {
         sender.Send(x_OSC);
     }
     if (register.yPos_status)
     {
         sender.Send(y_OSC);
     }
     if (register.zPos_status)
     {
         sender.Send(z_OSC);
     }
 }
示例#4
0
    // Use this for initialization
    void Start()
    {
        var message = new SharpOSC.OscMessage("/note", 60, 100, 1000);
        var sender  = new SharpOSC.UDPSender("127.0.0.1", 9000);

        sender.Send(message);
    }
示例#5
0
    public void Test()
    {
        var message = new SharpOSC.OscMessage(Address, Msg);
        var sender  = new SharpOSC.UDPSender("127.0.0.1", 53001);

        sender.Send(message);
    }
示例#6
0
    public void sendOscMessage(string mess)
    {
        Debug.Log("sendOscMessage");
        var message = new SharpOSC.OscMessage(mess);
        var sender  = new SharpOSC.UDPSender("127.0.0.1", 9000);

        sender.Send(message);
    }
示例#7
0
    public static void SendGenerateFromScratch()
    {
        string dummy   = "dummy";
        var    message = new SharpOSC.OscMessage("/something/generate_from_scratch", dummy);

        sender.Send(message);
    }
示例#8
0
        public override void OnFrame(Controller controller)
        {
            Frame currentFrame = controller.Frame();

            currentTime = currentFrame.Timestamp;
            timeChanged = currentTime - previousTime;

            if (timeChanged > 1000)
            {
                if (!currentFrame.Hands.IsEmpty)
                {
                    Finger finger = currentFrame.Fingers[0];

                    Screen screen = controller.LocatedScreens.ClosestScreenHit(finger);

                    if (screen != null && screen.IsValid)
                    {
                        var tipVelocity = ( int )finger.TipVelocity.Magnitude;

                        //if ( tipVelocity > 25 )
                        //{
                        var xScreenIntersect = screen.Intersect(finger, true).x;
                        var yScreenIntersect = screen.Intersect(finger, true).y;

                        if (xScreenIntersect.ToString() != "NaN")
                        {
                            var x = ( int )(xScreenIntersect * screen.WidthPixels);
                            var y = ( int )(screen.HeightPixels - (yScreenIntersect * screen.HeightPixels));

                            Console.WriteLine("Screen intersect X: " + xScreenIntersect.ToString());
                            Console.WriteLine("Screen intersect Y: " + yScreenIntersect.ToString());
                            Console.WriteLine("Width pixels: " + screen.WidthPixels.ToString());
                            Console.WriteLine("Height pixels: " + screen.HeightPixels.ToString());

                            Console.WriteLine("\n");

                            Console.WriteLine("x: " + x.ToString());
                            Console.WriteLine("y: " + y.ToString());

                            Console.WriteLine("\n");

                            Console.WriteLine("Tip velocity: " + tipVelocity.ToString());

                            var message = new SharpOSC.OscMessage("/mouse", x, y, tipVelocity);
                            var sender  = new SharpOSC.UDPSender("127.0.0.1", 55555);
                            sender.Send(message);
                            //MouseCursor.MoveCursor( x, y );
                            Console.WriteLine("\n" + new String('=', 40) + "\n");
                        }
                        //}
                    }
                }
            }

            previousTime = currentTime;
        }
示例#9
0
        public void sendMessages(UDPSender messageSender)
        {
            if (register.x_distance_status)
            {
                messageSender.Send(xdistOSC);
            }

            if (register.y_distance_status)
            {
                messageSender.Send(ydistOSC);
            }

            if (register.z_distance_status)
            {
                messageSender.Send(zdistOSC);
            }

            if (register.xy_distance_status)
            {
                messageSender.Send(xydistOSC);
            }

            if (register.xz_distance_status)
            {
                messageSender.Send(xzdistOSC);
            }

            if (register.yz_distance_status)
            {
                messageSender.Send(yzdistOSC);
            }

            if (register.xyz_distance_status)
            {
                messageSender.Send(xyzdistOSC);
            }
            if (register.theta_status)
            {
                messageSender.Send(angleOSC);
            }
        }
示例#10
0
    // Function to send Msg to Linux
    void sendPos(GameObject pos_arr)
    {
        // x and z for plane, y is height
        float pos_x = pos_arr.GetComponent <Transform> ().position.x;
        float pos_y = pos_arr.GetComponent <Transform> ().position.y;
        float pos_z = pos_arr.GetComponent <Transform> ().position.z;

        float azi;
        float ele;

        //Debug.Log(pos_x);
        //Debug.Log(pos_y);
        //Debug.Log(pos_z);

        azi = Mathf.Atan2(pos_x, pos_z) * 180 / Mathf.PI;
        ele = Mathf.Atan2(pos_y - 1.6f, Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z)) * 180 / Mathf.PI;

        var msg_azi = new SharpOSC.OscMessage("/0x00/azi", azi);
        var msg_ele = new SharpOSC.OscMessage("/0x00/ele", ele);
        var sender  = new SharpOSC.UDPSender(IP_add, port);

        sender.Send(msg_azi);
        sender.Send(msg_ele);
    }
示例#11
0
 private void TransmitData(VideoPacket packet)
 {
     var message = new OscMessage("/test/1", ObjectToString(packet));
     var udpSender = new UDPSender("127.0.0.1", 55555);
     udpSender.Send(message);
 }
        /*
            Sends any unlabled markers out over OSC.
            Address Pattern: \unlabledMarker
            Format: String[4]
                MarkerID
                GlobalMarkerPosition.x
                GlobalMarkerPosition.y
                GlobalMarkerPosition.z
        */
        private static void sendUnlabeledMarkers(Client MyClient, UDPSender sender)
        {
            // Get the unlabeled markers
            uint UnlabeledMarkerCount = MyClient.GetUnlabeledMarkerCount().MarkerCount;
            Console.WriteLine("    Unlabeled Markers ({0}):", UnlabeledMarkerCount);
            for (uint UnlabeledMarkerIndex = 0; UnlabeledMarkerIndex < UnlabeledMarkerCount; ++UnlabeledMarkerIndex)
            {
                // Get the global marker translation
                Output_GetUnlabeledMarkerGlobalTranslation _Output_GetUnlabeledMarkerGlobalTranslation
                  = MyClient.GetUnlabeledMarkerGlobalTranslation(UnlabeledMarkerIndex);

                String[] msg = new String[4];
                msg[0] = "UnlabledMarkerID: " + UnlabeledMarkerIndex + "";
                msg[1] = "pos.x: " + _Output_GetUnlabeledMarkerGlobalTranslation.Translation[0].ToString();
                msg[2] = "pos.y: " + _Output_GetUnlabeledMarkerGlobalTranslation.Translation[1].ToString();
                msg[3] = "pos.z: " + _Output_GetUnlabeledMarkerGlobalTranslation.Translation[2].ToString();

                var message = new SharpOSC.OscMessage("/unlabledMarker", msg);
                sender.Send(message);

                Console.WriteLine("      Marker #{0}: ({1}, {2}, {3})",
                                   UnlabeledMarkerIndex,
                                   _Output_GetUnlabeledMarkerGlobalTranslation.Translation[0],
                                   _Output_GetUnlabeledMarkerGlobalTranslation.Translation[1],
                                   _Output_GetUnlabeledMarkerGlobalTranslation.Translation[2]);
            }
        }
        /*
            Sends rigid body data out over OSC.
            Address Pattern: \rigidBody
            Format: String[4]
                RigidBodyName
                GlobalPosition.x
                GlobalPosition.y
                GlobalPosition.z
                GlobalOrientation.qx
                GlobalOrientation.qy
                GlobalOrientation.qz
                GlobalOrientation.qw
        */
        private static void sendRigidBodies(Client MyClient, UDPSender sender)
        {
            // Count the number of subjects
            uint SubjectCount = MyClient.GetSubjectCount().SubjectCount;
            for (uint SubjectIndex = 0; SubjectIndex < SubjectCount; ++SubjectIndex)
            {

                // Get the subject name
                string SubjectName = MyClient.GetSubjectName(SubjectIndex).SubjectName;
                Console.WriteLine("    Name: {0}", SubjectName);

                // Get the root segment
                string RootSegment = MyClient.GetSubjectRootSegmentName(SubjectName).SegmentName;
                Console.WriteLine("    Root Segment: {0}", RootSegment);

                //Get the static segment translation
                Output_GetSegmentGlobalTranslation _Output_GetSegmentGlobalTranslation =
                MyClient.GetSegmentGlobalTranslation(SubjectName, RootSegment);
                Console.WriteLine("        Global Translation: ({0},{1},{2}) {3}",
                                   _Output_GetSegmentGlobalTranslation.Translation[0],
                                   _Output_GetSegmentGlobalTranslation.Translation[1],
                                   _Output_GetSegmentGlobalTranslation.Translation[2],
                                   _Output_GetSegmentGlobalTranslation.Occluded);

                // Get the global segment rotation in quaternion co-ordinates
                Output_GetSegmentGlobalRotationQuaternion _Output_GetSegmentGlobalRotationQuaternion =
                MyClient.GetSegmentGlobalRotationQuaternion(SubjectName, RootSegment);
                Console.WriteLine("        Global Rotation Quaternion: ({0},{1},{2},{3}) {4}",
                                   _Output_GetSegmentGlobalRotationQuaternion.Rotation[0],
                                   _Output_GetSegmentGlobalRotationQuaternion.Rotation[1],
                                   _Output_GetSegmentGlobalRotationQuaternion.Rotation[2],
                                   _Output_GetSegmentGlobalRotationQuaternion.Rotation[3],
                                   _Output_GetSegmentGlobalRotationQuaternion.Occluded);

                String[] msg = new String[8];
                msg[0] = "RigidBody Name: "+ SubjectName;
                msg[1] = "pos.x: " + _Output_GetSegmentGlobalTranslation.Translation[0].ToString();
                msg[2] = "pos.y: " + _Output_GetSegmentGlobalTranslation.Translation[1].ToString();
                msg[3] = "pos.z: " + _Output_GetSegmentGlobalTranslation.Translation[2].ToString();
                msg[4] = "q.x: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[0].ToString();
                msg[5] = "q.y: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[1].ToString();
                msg[6] = "q.z: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[2].ToString();
                msg[7] = "q.w: " + _Output_GetSegmentGlobalRotationQuaternion.Rotation[3].ToString();

                // ignore dropped tracking frames
                if (_Output_GetSegmentGlobalTranslation.Translation[0] != 0 &&
                    _Output_GetSegmentGlobalTranslation.Translation[1] != 0 &&
                    _Output_GetSegmentGlobalTranslation.Translation[2] != 0 ) {
                    var message = new SharpOSC.OscMessage("/rigidBody", msg);
                    sender.Send(message);
                }

            }
        }
        private static void sendLocalRotationQuaternion(Client MyClient, UDPSender sender)
        {
            // Count the number of subjects
            uint SubjectCount = MyClient.GetSubjectCount().SubjectCount;
            for (uint SubjectIndex = 0; SubjectIndex < SubjectCount; ++SubjectIndex)
            {

                // Get the subject name
                string SubjectName = MyClient.GetSubjectName(SubjectIndex).SubjectName;
                Console.WriteLine("    Name: {0}", SubjectName);

                // Get the root segment
                string RootSegment = MyClient.GetSubjectRootSegmentName(SubjectName).SegmentName;
                Console.WriteLine("    Root Segment: {0}", RootSegment);

                //Get the static segment translation
                Output_GetSegmentLocalRotationQuaternion Output =
                MyClient.GetSegmentLocalRotationQuaternion(SubjectName, RootSegment);

                Console.WriteLine("        LOCAL Rotation Quaternion: ({0},{1},{2},{3})",
                                   Output.Rotation[0],
                                   Output.Rotation[1],
                                   Output.Rotation[2],
                                   Output.Rotation[3]);

                String[] msg = new String[5];
                msg[0] = "RigidBody Name: " + SubjectName;
                msg[1] = "q.x: " + Output.Rotation[0].ToString();
                msg[2] = "q.y: " + Output.Rotation[1].ToString();
                msg[3] = "q.z: " + Output.Rotation[2].ToString();
                msg[4] = "q.w: " + Output.Rotation[3].ToString();

                var message = new SharpOSC.OscMessage("/localQuat", msg);
                sender.Send(message);

            }
        }
        /*
            Sends any labled markers out over OSC.
            Address Pattern: \labledMarker
            Format: String[5]
                MarkerID
                MarkerName
                GlobalMarkerPosition.x
                GlobalMarkerPosition.y
                GlobalMarkerPosition.z
        */
        private static void sendLabledMarkers(Client MyClient, UDPSender sender)
        {
            // For each subject in the scene
            uint SubjectCount = MyClient.GetSubjectCount().SubjectCount;
            for (uint SubjectIndex = 0; SubjectIndex < SubjectCount; ++SubjectIndex)
            {
                // Get the subject name
                string SubjectName = MyClient.GetSubjectName(SubjectIndex).SubjectName;

                // Count the number of markers
                uint MarkerCount = MyClient.GetMarkerCount(SubjectName).MarkerCount;

                // for each marker in subject
                for (uint MarkerIndex = 0; MarkerIndex < MarkerCount; ++MarkerIndex)
                {
                    // Get the marker name
                    string MarkerName = MyClient.GetMarkerName(SubjectName, MarkerIndex).MarkerName;

                    // Get the global marker translation
                    Output_GetMarkerGlobalTranslation _Output_GetMarkerGlobalTranslation =
                      MyClient.GetMarkerGlobalTranslation(SubjectName, MarkerName);

                    String[] msg = new String[5];
                    msg[0] = "RigidBody Name: "+MarkerName;
                    msg[1] = "MarkerID: " + MarkerIndex;
                    msg[2] = "pos.x: " + _Output_GetMarkerGlobalTranslation.Translation[0].ToString();
                    msg[3] = "pos.y: " + _Output_GetMarkerGlobalTranslation.Translation[1].ToString();
                    msg[4] = "pos.z: " + _Output_GetMarkerGlobalTranslation.Translation[2].ToString();

                    // ignore dropped tracking locations
                    if (_Output_GetMarkerGlobalTranslation.Translation[0] != 0 &&
                        _Output_GetMarkerGlobalTranslation.Translation[1] != 0 &&
                        _Output_GetMarkerGlobalTranslation.Translation[2] != 0)
                    {
                        var message = new SharpOSC.OscMessage("/labledMarker", msg);
                        sender.Send(message);
                    }

                    Console.WriteLine("      Marker #{0}: {1} ({2}, {3}, {4}) {5}",
                                       MarkerIndex,
                                       MarkerName,
                                       _Output_GetMarkerGlobalTranslation.Translation[0],
                                       _Output_GetMarkerGlobalTranslation.Translation[1],
                                       _Output_GetMarkerGlobalTranslation.Translation[2],
                                       _Output_GetMarkerGlobalTranslation.Occluded);
               }
            }
        }
示例#16
0
        public static string receiveMsg(NetworkStream stream, TcpClient tcpClient, UDPSender sender)
        {
            string msgReceived = "";

            // Create a byte array for the available bytes
            byte[] arrayBytesRequest = new byte[tcpClient.Available];
            // Read the bytes from the stream
            int nRead = stream.Read(arrayBytesRequest, 0, arrayBytesRequest.Length);

            if (nRead > 0)
            {
                // Convert the byte array into a string
                string sMsgRequest = ASCIIEncoding.ASCII.GetString(arrayBytesRequest);
                Console.WriteLine("Msg from Robot: " + sMsgRequest);
                string sMsgAnswer = string.Empty;

                // set the key for the key/value pairs
                string key = "";
                if (sMsgRequest.StartsWith("world"))
                    key = "hello";
                else if (sMsgRequest.StartsWith("p"))
                    key = "target";
                else if (sMsgRequest.StartsWith("["))
                    key = "joints";
                else if (sMsgRequest.StartsWith("SET force"))
                    key = "force";
                else if (sMsgRequest.StartsWith("SET tcp force"))
                    key = "tcp force";

                // set the value for the key/value pairs
                if (key.Equals("hello"))
                {
                    Console.WriteLine("Going to home position: hello " + sMsgRequest + "!");
                    // go to home position

                    msgReceived = "going home";
                }
                else if (key.Equals("target"))
                {
                    int start = 2;
                    msgReceived = sMsgRequest.Substring(2, sMsgRequest.Length - 1 - start);

                    string[] coords = msgReceived.Split(',');
                    if (coords.Length == 6)
                    {
                        float x = float.Parse(coords[0]);
                        float y = float.Parse(coords[1]);
                        float z = float.Parse(coords[2]);
                        float rx = float.Parse(coords[3]);
                        float ry = float.Parse(coords[4]);
                        float rz = float.Parse(coords[5]);

                        pose[0] = x;
                        pose[1] = y;
                        pose[2] = z;
                        pose[3] = rx;
                        pose[4] = ry;
                        pose[5] = rz;

                        // send pose over OSC
                        String[] msg = new String[6];
                        msg[0] = "x: " + pose[0];
                        msg[1] = "y: " + pose[1];
                        msg[2] = "z: " + pose[2];
                        msg[3] = "rx: " + pose[3];
                        msg[4] = "ry: " + pose[4];
                        msg[5] = "rz: " + pose[5];
                        var message = new SharpOSC.OscMessage("/pose", msg);
                        sender.Send(message);

                        Console.WriteLine("Robot Pose:  [" + x + ", " + y + ", " + z + ", " + rx + ", " + ry + ", " + rz + "]");
                    }
                    else
                    {
                        msgReceived = "WTF: " + sMsgRequest;
                    }
                }
                else if (key.Equals("joints"))
                {
                    Console.WriteLine("Parsing joint pose: " + sMsgRequest);
                    int start = 1;
                    msgReceived = sMsgRequest.Substring(start, sMsgRequest.Length - 1 - start);

                    string[] coords = msgReceived.Split(',');
                    if (coords.Length == 6)
                    {
                        float x = float.Parse(coords[0]);
                        float y = float.Parse(coords[1]);
                        float z = float.Parse(coords[2]);
                        float rx = float.Parse(coords[3]);
                        float ry = float.Parse(coords[4]);
                        float rz = float.Parse(coords[5]);

                        joints[0] = x;
                        joints[1] = y;
                        joints[2] = z;
                        joints[3] = rx;
                        joints[4] = ry;
                        joints[5] = rz;

                        // send joints over OSC
                        String[] msg = new String[6];
                        msg[0] = "base: " + pose[0];
                        msg[1] = "shoulder: " + pose[1];
                        msg[2] = "elbow: " + pose[2];
                        msg[3] = "wrist 1: " + pose[3];
                        msg[4] = "wrist 2: " + pose[4];
                        msg[5] = "wrist 3: " + pose[5];
                        var message = new SharpOSC.OscMessage("/joints", msg);
                        sender.Send(message);

                        Console.WriteLine("Robot Joint Positions: [" + x + ", " + y + ", " + z + ", " + rx + ", " + ry + ", " + rz + "]");
                    }
                    else
                    {
                        msgReceived = "WTF: " + sMsgRequest;
                    }
                }
                else if (key.Equals("force"))
                {
                    Console.WriteLine("Parsing pose: " + sMsgRequest);
                    int start = key.Length + 5;
                    msgReceived = sMsgRequest.Substring(start, sMsgRequest.Length - 1 - start);

                    force = float.Parse(msgReceived);

                    // send force over OSC
                    var message = new SharpOSC.OscMessage("/force", force);
                    sender.Send(message);

                    Console.WriteLine("Robot Force: {" + force + "}");
                }
                else if (key.Equals("tcp force"))
                {
                    Console.WriteLine("Parsing pose: " + sMsgRequest);
                    int start = key.Length + 5;
                    msgReceived = sMsgRequest.Substring(start, sMsgRequest.Length - 1 - start);

                    tcpForce = float.Parse(msgReceived);

                    // send TCP force over OSC
                    var message = new SharpOSC.OscMessage("/TCPforce", tcpForce);
                    sender.Send(message);

                    Console.WriteLine("Robot TCP Force: {" + tcpForce + "}");
                }
                else
                {
                    // unkown command
                    msgReceived = sMsgRequest;
                    ///sendMsg(stream, "unknown command sent to robot: " + sMsgRequest);
                }

            }
            else if (tcpClient.Available == 0)
            {
                Console.WriteLine("Client closed the connection.");
                // No bytes read, and no bytes available, the client is closed.
                stream.Close();
            }

            return msgReceived;
        }
示例#17
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"));
        }
示例#18
0
        public void Sync()
        {
            label_status.Invoke((MethodInvoker)(() => label_status.Text = "Syncing"));
            foreach (KeyValuePair <string, string> vVar in voicemeeterVarNames)
            {
                oscSender.Send(new SharpOSC.OscMessage(vVar.Value, (float)vm.GetParam(vVar.Key)));
                oscSender.Send(new SharpOSC.OscMessage(vVar.Value + "/Text", (float)vm.GetParam(vVar.Key)));
                System.Threading.Thread.Sleep(5);
                //Console.WriteLine(vVar.Key + " - " + vVar.Value.ToString());
            }


            for (int i = 0; i < 8; i++)
            {
                try
                {
                    oscSender.Send(new SharpOSC.OscMessage("/Slider/" + i.ToString() + "/device/Text", vm.GetParam("Strip[" + i.ToString() + "].device")));
                    //Console.WriteLine((string)vm.GetParamString("Strip[" + i.ToString() + "].device"));
                }
                catch (System.Exception e)
                {
                    Console.WriteLine("oops");
                }
            }


            foreach (KeyValuePair <string, string> vVar in voicemeeterXYVarNames)
            {
                string value   = vVar.Value;
                float  tmpVarX = (float)vm.GetParam(vVar.Key + "_x");
                float  tmpVarY = (float)vm.GetParam(vVar.Key + "_y");
                if (vVar.Key.Contains("fx"))
                {
                    value = vVar.Value + "y";
                }
                if (vVar.Key.Contains("Pan"))
                {
                    //Console.WriteLine("PANNNN!!!!!!!!");
                    if (vVar.Key.Contains("5") || vVar.Key.Contains("6") || vVar.Key.Contains("7"))
                    {
                        //Console.WriteLine("5, 6, OR 7!!!!!!!!");
                        tmpVarY = ConvertRange((float)-0.5, (float)0.5, (float)-1, (float)1, tmpVarY);
                        tmpVarX = ConvertRange((float)-0.5, (float)0.5, (float)-1, (float)1, tmpVarX);
                    }
                    else
                    {
                        //tmpVarX = ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1, tmpVarX);
                        tmpVarY = ConvertRange((float)0, (float)1, (float)-0.5, (float)0.5, tmpVarY);
                    }
                }
                else
                {
                    //tmpVarY = ConvertRange((float)-0.5, (float)0.5, (float)0, (float)1,tmpVarY);
                    tmpVarY = ConvertRange((float)0, (float)1, (float)-0.5, (float)0.5, tmpVarY);
                }


                //if (voicemeeterXYVars[vVar.Key + "_x"] != tmpVarX || voicemeeterXYVars[vVar.Key + "_y"] != tmpVarY)
                //{
                //voicemeeterXYVars[vVar.Key + "_x"] = tmpVarX;
                //voicemeeterXYVars[vVar.Key + "_y"] = tmpVarY;
                oscSender.Send(new SharpOSC.OscMessage(value, tmpVarY, tmpVarX));
                oscSender.Send(new SharpOSC.OscMessage(value + "/Text", tmpVarY + " - " + tmpVarX));
                System.Threading.Thread.Sleep(10);
                //Console.WriteLine(vVar.Key + " - " + value.ToString());
                //}
            }

            label_status.Invoke((MethodInvoker)(() => label_status.Text = ""));
        }
示例#19
0
    // Update is called once per frame
    void Update()
    {
        Frame frame = controller.Frame();

        Debug.Log("Frame Id: " + frame.Id);
        frameCount++;

        HandList hands = frame.Hands;

        for (int i = 0; i < hands.Count; i++)
        {
            Hand        hand         = hands[i];
            Leap.Vector direction    = hand.Direction;
            Leap.Vector palmNormal   = hand.PalmNormal;
            Leap.Vector palmPosition = hand.PalmPosition;
            Leap.Vector handSpeed    = hand.PalmVelocity;


            if (i == 0)
            {
                fdistanceDirection    = direction.DistanceTo(fprevDirection);
                fdistancePalmPosition = palmPosition.DistanceTo(fprevPalmPosition);
                fdistancePalmNormal   = palmNormal.DistanceTo(fprevPalmNormal);
                fdistanceHandVelocity = handSpeed.DistanceTo(fprevHandVelocity);

                fprevDirection    = direction;
                fprevPalmNormal   = palmNormal;
                fprevPalmPosition = palmPosition;
                fprevHandVelocity = handSpeed;
            }
            else if (i == 1)
            {
                sdistanceDirection    = direction.DistanceTo(sprevDirection);
                sdistancePalmPosition = palmPosition.DistanceTo(sprevPalmPosition);
                sdistancePalmNormal   = palmNormal.DistanceTo(sprevPalmNormal);
                sdistanceHandVelocity = handSpeed.DistanceTo(sprevHandVelocity);

                sprevDirection    = direction;
                sprevPalmNormal   = palmNormal;
                sprevPalmPosition = palmPosition;
                sprevHandVelocity = handSpeed;

                Debug.Log("first direction " + fdistanceDirection);
                Debug.Log("second direction " + sdistanceDirection);

                Debug.Log("Direction change = " + (fdistanceDirection - sdistanceDirection));
                directionFile.WriteLine("");
                directionFile.WriteLine("frame id: " + frame.Id);
                directionFile.WriteLine("Direction first: " + fdistanceDirection + " second: " + sdistanceDirection + " diff: " + (fdistanceDirection - sdistanceDirection));
                directionFile.WriteLine("PalmPosition first: " + fdistancePalmPosition + " second: " + sdistancePalmPosition + " diff: " + (fdistancePalmPosition - sdistancePalmPosition));
                directionFile.WriteLine("PalmNormal first: " + fdistancePalmNormal + " second: " + sdistancePalmNormal + " diff: " + (fdistancePalmNormal - sdistancePalmNormal));
                directionFile.WriteLine("Velocity first: " + fdistanceHandVelocity + " second: " + sdistanceHandVelocity + " diff: " + (fdistanceHandVelocity - sdistanceHandVelocity));

                directionFile.WriteLine("");
                float directionChange    = (fdistanceDirection - sdistanceDirection);
                float palmPositionChange = fdistancePalmPosition - sdistancePalmPosition;
                float palmNormalChange   = fdistancePalmNormal - sdistancePalmNormal;
                float velocityChange     = fdistanceHandVelocity - sdistanceHandVelocity;

                if (directionChange < 0.0f)
                {
                    directionChange *= -1.0f;
                }
                if (palmPositionChange < 0.0f)
                {
                    palmPositionChange *= -1.0f;
                }
                if (palmNormalChange < 0.0f)
                {
                    palmNormalChange *= -1.0f;
                }
                if (velocityChange < 0.0f)
                {
                    velocityChange *= -1.0f;
                }

                totalDistance     += directionChange;
                totalPalmPosition += palmPositionChange;
                totalPalmNormal   += palmNormalChange;
                totalVelocity     += velocityChange;
                test_status        = "Status:\n";
                if (directionChange < 0.001)
                {
                    test_status += "Direction OK\n";
                }
                else
                {
                    test_status += "Fix Direction\n";
                }

                if (palmPositionChange < 1.0)
                {
                    test_status += "PalmPosition OK\n";
                }
                else
                {
                    test_status += "Fix PalmPosition\n";
                }

                if (palmNormalChange < 1.0)
                {
                    test_status += "PalmNormal OK\n";
                }
                else
                {
                    test_status += "Fix PalmNormal\n";
                }

                if (velocityChange < 1.0)
                {
                    test_status += "Velocity OK\n";
                }
                else
                {
                    test_status += "Fix Velocity\n";
                }

                float error = totalDistance * 2.0f + totalPalmNormal * 2.0f + totalVelocity + totalPalmPosition * 3.0f;
                error /= (4 * frameCount);

                var message = new SharpOSC.OscMessage("/hand/1", error);
                var sender  = new SharpOSC.UDPSender("127.0.0.1", 55555);
                sender.Send(message);

                if (error > 5.0)
                {
                    status_text.color = Color.red;
                    test_status      += "Not matching";
                    //source.PlayOneShot(buzzSound);
                }
                else
                {
                    status_text.color = Color.green;
                    test_status      += "Matching";
                    //source.PlayOneShot(matchSound);
                }


                status_text.text = test_status;
            }
        }
    }