コード例 #1
0
        void Update()
        {
            // If we are going to send 'as bundle', then we would like OSC io
            // to add the timetag to the messeges contained in the bundle.
            oscIn.addTimeTagsToBundledMessages = sendAsBundle;

            // Create a messege
            OscMessage message = new OscMessage( address );

            // Create a timetag. Default time is DateTime.Now.
            OscTimeTag timetag = new OscTimeTag();

            // Make it 1 milisecond into the future.
            timetag.time = timetag.time.AddMilliseconds( 1 );

            // Two possible methods for sending timetags ...
            if( sendAsBundle )
            {
                // Either create a bundle with the timetag, add the message and send.
                OscBundle bundle = new OscBundle( timetag );
                bundle.Add( message );
                oscOut.Send( bundle );
            } else {
                // Or add the timetag to message and send it.
                message.Add( timetag );
                oscOut.Send( message );
            }

            // Update label.
            sendLabel.text = timetag.time + ":" + timetag.time.Millisecond;
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: MugenSAS/osc-.net
        private static OscBundle CreateTestBundle()
        {
            IPEndPoint sourceEndPoint = new IPEndPoint(IPAddress.Loopback, Port);
            OscBundle bundle = new OscBundle(sourceEndPoint);

            OscBundle nestedBundle = new OscBundle(sourceEndPoint);
            OscMessage nestedMessage = new OscMessage(sourceEndPoint, TestMethod);
            nestedMessage.AppendNil();
            nestedMessage.Append("Some String");
            nestedMessage.Append(10);
            nestedMessage.Append(100000L);
            nestedMessage.Append(1234.567f);
            nestedMessage.Append(10.0012345);
            nestedMessage.Append(new byte[] { 1, 2, 3, 4 });
            nestedMessage.Append(new OscTimeTag());
            nestedMessage.Append('c');
            nestedMessage.Append(Color.DarkGoldenrod);
            nestedMessage.Append(true);
            nestedMessage.Append(false);
            nestedMessage.Append(float.PositiveInfinity);
            nestedBundle.Append(nestedMessage);
            bundle.Append(nestedBundle);

            OscMessage message = new OscMessage(sourceEndPoint, AliveMethod);
            message.Append(9876.543f);
            bundle.Append(message);

            return bundle;
        }
コード例 #3
0
    //  sends the messages stored in messagesThisFrame as a bundle, then clears messagesThisFrame
    private void SendBundle()
    {
        OscBundle frameBundle = new OscBundle(localEndPoint);

        foreach (OscMessage message in messagesThisFrame)
        {
            frameBundle.Append(message);
        }
        //UnityEngine.Debug.Log("sending bundle");
        frameBundle.Send(externalEndPoint);

        messagesThisFrame.Clear();
    }
コード例 #4
0
        /// <summary>
        /// Appends the data.
        /// Depending on your bundle mode the AppendData method works in a different way.
        /// If you use bundles you can append multiple OscMessages.
        /// If you don't use bundles (default) you append data to your OscMessage
        /// We only can append data types that are supported by the OSC specification:
        ///(Int32,Int64,Single,Double,String,Byte[],OscTimeTag,Char,Color,Boolean)
        /// </summary>
        /// <param name="_data">_data.</param>
        public void AppendData(object _data)
        {
            OscBundle bundle = _data as OscBundle;

            // Debug.Log("UniOSCEventDispatcherCB.AppendData:" + (bundle != null).ToString());
            if (_OSCpkg == null)
            {
                // if (bundle == null) { _SetupOSCMessage(false); } else { _SetupOSCMessage(true); }
                _SetupOSCMessage(bundle != null);
                // return;
            }

            if (_OSCpkg is OscBundle)
            {
                if (bundle == null)
                {
                    if (_data is OscMessage)
                    {
                        ((OscBundle)_OSCpkg).Append(_data);
                    }
                    else
                    {
                        Debug.LogWarning("<color=orange>You can only append a OscMessage to a OscBundle</color>");
                    }
                }
                else
                {
                    Debug.LogWarning("<color=orange>You  can't append a OSCBundle to a OSCBundle</color>");
                }
            }

            if (_OSCpkg is OscMessage)
            {
                if (bundle == null)
                {
                    if (_data is OscMessage)
                    {
                        Debug.LogWarning("<color=orange>You can't append a OSCMessage to a OSCMessage</color>");
                    }
                    else
                    {
                        _OSCpkg.Append(_data);
                    }
                }

                else
                {
                    Debug.LogWarning("<color=orange>You can't append a Bundle to a OSCMessage</color>");
                }
            }
        }
コード例 #5
0
    private void Concentration(OscBundle data)
    {
        double value = parseDoubleFromString(data.Messages[0].Arguments[0].ToString());

        Debug.Log(value);
        if (value > 1)
        {
            ThinkingUp(100);
        }
        if (value < 1)
        {
            ThinkingDown(100);
        }
    }
コード例 #6
0
        public static String buildJSONBundle(String bundleName, OscBundle bundle)
        {
            String json    = "[\"" + bundleName + "\",[";
            var    counter = 0;

            foreach (OscElement element in bundle.Elements)
            {
                json += buildJSONElement(element);
                json += counter == (bundle.Elements.Count - 1) ? "" : ",";
                counter++;
            }
            json += "]]";
            return(json);
        }
コード例 #7
0
        public void TryParseTest_Good()
        {
            bool expected = true;

            foreach (string str in UnitTestHelper.Bundles_Good)
            {
                OscBundle bundle = null;

                bool actual;
                actual = OscBundle.TryParse(str, out bundle);

                Assert.True(expected == actual, $"While parsing good bundle '{str}'");
            }
        }
コード例 #8
0
ファイル: OscBundleTest.cs プロジェクト: HakanL/Haukcode.Osc
        public void Nested_WriteTest()
        {
            OscBundle target = UnitTestHelper.DoubleNestedBundle();

            byte[] data     = new byte[UnitTestHelper.DoubleNestedBundleBody.Length];
            int    index    = 0;
            int    expected = UnitTestHelper.DoubleNestedBundleBody.Length;
            int    actual;

            actual = target.Write(data, index);

            Assert.AreEqual(expected, actual);
            UnitTestHelper.AreEqual(data, UnitTestHelper.DoubleNestedBundleBody);
        }
コード例 #9
0
    private void handleOSC(OscPacket packet)
    {
        OscBundle p = (OscBundle)packet;

        if (p != null)
        {
            int count = 0;
            foreach (OscMessage m in p.Messages)
            {
                HandleOSCMeassage(m, count);
                count++;
            }
        }
    }
コード例 #10
0
        void Update()
        {
            // Create a bundle, add two messages with seperate addresses and values, then send.
            OscBundle bundle = new OscBundle();
            OscMessage message1 = new OscMessage( address1, Random.value );
            OscMessage message2 = new OscMessage( address2, Random.value );
            bundle.Add( message1 );
            bundle.Add( message2 );
            oscOut.Send( bundle );

            // Update UI.
            sendLabel1.text = message1.ToString();
            sendLabel2.text = message2.ToString();
        }
コード例 #11
0
        private bool ShouldProcessPackage(OscPacket packet)
        {
            if (packet is OscBundle == false)
            {
                return(true);
            }

            OscBundle bundle = packet as OscBundle;

            if (bundle.Count == 0)
            {
                return(true);
            }

            if (bundle[0] is OscMessage == false)
            {
                return(true);
            }

            OscMessage message = bundle[0] as OscMessage;

            if (message.Address != OscPackage.PackageAddress)
            {
                return(true);
            }

            if (message.Count == 0)
            {
                return(true);
            }

            if (message[0] is long == false)
            {
                return(true);
            }

            ulong id = unchecked ((ulong)(long)(message[0]));

            if (activePackages.ContainsKey(id) == false)
            {
                return(true);
            }

            //Cancel(id);

            PackageConfirmed?.Invoke(id);

            return(false);
        }
コード例 #12
0
    private void handleOSC(OscPacket packet)
    {
        OscBundle p = (OscBundle)packet;
        if (p != null)
        {
            //Debug.Log("Receiving OSC");
            int count = 0;
            foreach (OscMessage m in p.Messages)
            {

                HandleOSCMeassage(m, count);
                count++;
            }
        }
    }
コード例 #13
0
        private void parseOscBundle(OscBundle bundle)
        {
            foreach (var message in bundle.Messages)
            {
                parseOscMessage(message);
            }

            if (bundle.Bundles.Count > 0)
            {
                foreach (var _bundle in bundle.Bundles)
                {
                    parseOscBundle(_bundle);
                }
            }
        }
コード例 #14
0
        public void ReadTest()
        {
            OscTimeTag timestamp = new OscTimeTag(14236589681638796952);
            OscMessage[] messages = new OscMessage[] { UnitTestHelper.Message_Array_Ints(), UnitTestHelper.Message_Array_Ints() };
            OscBundle expected = new OscBundle(timestamp, messages);

            byte[] bytes = expected.ToByteArray();
            int index = 0;
            int count = bytes.Length;
            OscBundle actual;
            actual = OscBundle.Read(bytes, index, count);
            UnitTestHelper.AreEqual(expected, actual);

            Assert.IsTrue(actual.Equals(expected));
        }
コード例 #15
0
ファイル: OscOut.cs プロジェクト: Koala-Lumpur/P5_Group502
 void ExtractMessages(OscPacket packet, Queue <OscMessage> list)
 {
     if (packet is OscMessage)
     {
         list.Enqueue(packet as OscMessage);
     }
     else
     {
         OscBundle bundle = packet as OscBundle;
         foreach (OscPacket subPacket in bundle.packets)
         {
             ExtractMessages(subPacket, list);
         }
     }
 }
コード例 #16
0
ファイル: OscPool.cs プロジェクト: ytan101/soundscape_player
 /// <summary>
 /// Recycle the specified bundle.
 /// </summary>
 public static void Recycle(OscBundle bundle)
 {
     if (bundle == null)
     {
         return;
     }
     if (_bundles.Count > saftyCapacity)
     {
         return;
     }
     if (!_bundles.Contains(bundle))
     {
         _bundles.Push(bundle);
     }
 }
コード例 #17
0
ファイル: OSCDriver.cs プロジェクト: The-XOR/oscServer
 private void rcvCb(OscPacket packet)
 {
     if (packet.IsBundle)
     {
         OscBundle bndl = packet as OscBundle;
         foreach (OscMessage msg in bndl.Messages)
         {
             sendToClient(msg);
         }
     }
     else
     {
         sendToClient(packet as OscMessage);
     }
 }
コード例 #18
0
        void Update()
        {
            // Create a bundle, add two messages with seperate addresses and values, then send.
            OscBundle  bundle   = new OscBundle();
            OscMessage message1 = new OscMessage(address1, Random.value);
            OscMessage message2 = new OscMessage(address2, Random.value);

            bundle.Add(message1);
            bundle.Add(message2);
            oscOut.Send(bundle);

            // Update UI.
            sendLabel1.text = message1.ToString();
            sendLabel2.text = message2.ToString();
        }
コード例 #19
0
        private void startUp()
        {
            hook = new UserActivityHook();
            hook.KeyDown += (s, keycode, isCtrl) =>
            {
                OscElement msg = new OscElement(textOSC.Text, textId.Text, keycode.ToString());
                OscBundle bundle = new OscBundle();
                bundle.AddElement(msg);

                oscmanager.Send(bundle);

                textIndata.Text = keycode.ToString();

            };
        }
コード例 #20
0
ファイル: TUIOTransmitter.cs プロジェクト: phygitalism/IF_TUI
        public void Send()
        {
            try
            {
                // bundle and send tuio data

                //Debug.LogFormat("TUIO Cursors:{0} Objects:{1} Blobs:{2}", cursorCount, objectCount, blobCount);

                bool sendKeepAliveCursors = (fseq % keepAliveInterval == keepAliveCursorsOffset);
                bool sendKeepAliveObjects = (fseq % keepAliveInterval == keepAliveObjectsOffset);
                bool sendKeepAliveBlobs   = (fseq % keepAliveInterval == keepAliveBlobsOffset);

                // send?
                bool sendCursors = cursorsEnabled && (fseq == cursorsChangedFseq || sendKeepAliveCursors);
                bool sendObjects = objectsEnabled && (fseq == objectsChangedFseq || sendKeepAliveObjects);
                bool sendBlobs   = blobsEnabled && (fseq == blobsChangedFseq || sendKeepAliveBlobs);

                if (sendCursors || sendObjects || sendBlobs)
                {
                    OscBundle oscBundle = new OscBundle();
                    if (sendCursors)
                    {
                        AppendToBundle <TUIOCursor>(oscBundle, sourceMessage2Dcur, aliveMessage2Dcur, fseqMessage2Dcur, sendKeepAliveCursors);
                    }
                    if (sendObjects)
                    {
                        AppendToBundle <TUIOObject>(oscBundle, sourceMessage2Dobj, aliveMessage2Dobj, fseqMessage2Dobj, sendKeepAliveObjects);
                    }
                    if (sendBlobs)
                    {
                        AppendToBundle <TUIOBlob>(oscBundle, sourceMessage2Dblb, aliveMessage2Dblb, fseqMessage2Dblb, sendKeepAliveBlobs);
                    }
                    udpTransmitter.Send(oscBundle);

                    // reset any previous error
                    hasError = false;
                }
            }
            catch
            {
                hasError = true;
                throw new SendTuioBundleException(string.Format("Error sending TUIO bundle to {0}:{1}", ipAddress, port));
            }
            finally
            {
                fseq++;
            }
        }
コード例 #21
0
    public static new bool FromBytes(byte[] data, ref int pos, int end, out OscPacket packet)
    {
        // Check header size
        int bundleByteSize = end - pos;

        if (bundleByteSize < headerByteSize)
        {
            Debug.LogWarning("[OSC io] OscBundle with invalid header was ignored." + Environment.NewLine);
            packet = null;
            return(false);
        }

        // Check prefix
        string prefixInput = Encoding.ASCII.GetString(data, pos, prefixByteSize);

        if (prefixInput != prefix)
        {
            Debug.LogWarning("[OSC io] OscBundle with invalid header was ignored." + Environment.NewLine);
            packet = null;
            return(false);
        }
        pos += prefixByteSize + 1;         // + 1 to ensure bytes multiple of 4

        // Get timetag
        byte[] oscNtpBytes = new byte[OscTimeTag.byteSize];
        Array.Copy(data, pos, oscNtpBytes, 0, OscTimeTag.byteSize);
        OscTimeTag timeTag = new OscTimeTag(oscNtpBytes);

        pos += OscTimeTag.byteSize;

        // Create and fill bundle
        packet = new OscBundle(timeTag);
        OscBundle bundle = packet as OscBundle;

        while (pos < end)
        {
            int length = BitConverter.ToInt32(data, 0);
            pos += 4;
            int       packetEnd = pos + length;
            OscPacket subPacket;
            if (pos < end && OscPacket.FromBytes(data, ref pos, packetEnd, out subPacket))
            {
                bundle.Add(subPacket);
            }
        }

        return(true);
    }
コード例 #22
0
        private void UnpackMessages(MessageDirection direction, OscPacket packet)
        {
            if (packet is OscMessage)
            {
                OnMessage(direction, packet as OscMessage);
            }
            else if (packet is OscBundle)
            {
                OscBundle bundle = packet as OscBundle;

                foreach (OscPacket sub in bundle)
                {
                    UnpackMessages(direction, sub);
                }
            }
        }
コード例 #23
0
ファイル: OscOut.cs プロジェクト: kulpajj/QuBits_Unity
 void InvokeAnyMessageEventRecursively(OscPacket packet)
 {
     if (packet is OscBundle)
     {
         OscBundle bundle = packet as OscBundle;
         foreach (OscPacket subPacket in bundle.packets)
         {
             InvokeAnyMessageEventRecursively(subPacket);
         }
     }
     else
     {
         onAnyMessage.Invoke(packet as OscMessage);
         _messageCount++;
     }
 }
コード例 #24
0
    void SendAutoBundle()
    {
        if (_autoBundleMessageBuffer.count == 0)
        {
            return;
        }

        // Prepare for composing bundle.
        _bundleTimeTag.time = _dateTime;
        int sendBufferByteIndex = 0;

        OscBundle.TryWriteHeader(_bundleTimeTag, _sendBuffer, ref sendBufferByteIndex);

        // Loop through serialized messages in the end-of-frame-buffer.
        int messageBufferByteIndex = 0;

        for (int m = 0; m < _autoBundleMessageBuffer.count; m++)
        {
            // Get message size.
            int messageSize = _autoBundleMessageBuffer.GetSize(m);               // Bundle stores size of each message in a 4 byte integer.

            // Check limit.
            if (sendBufferByteIndex + FourByteOscData.byteCount + messageSize >= _sendBuffer.Length)
            {
                // We have reached the safety limit, now send the bundle.
                TrySendBuffer(sendBufferByteIndex);

                // Get ready for composing next bundle.
                sendBufferByteIndex = OscConst.bundleHeaderSize;
            }

            // Write message size and data.
            new FourByteOscData(messageSize).TryWriteTo(_sendBuffer, ref sendBufferByteIndex);
            Array.Copy(_autoBundleMessageBuffer.data, messageBufferByteIndex, _sendBuffer, sendBufferByteIndex, messageSize);
            messageBufferByteIndex += messageSize;
            sendBufferByteIndex    += messageSize;
        }

        // Send bundle if there is anything in it and clean.
        if (sendBufferByteIndex > OscConst.bundleHeaderSize)
        {
            TrySendBuffer(sendBufferByteIndex);
        }

        _messageCountThisFrame += _autoBundleMessageBuffer.count;
        _autoBundleMessageBuffer.Clear();
    }
コード例 #25
0
ファイル: OscOut.cs プロジェクト: Koala-Lumpur/P5_Group502
    IEnumerator SendBundleOnEndOfFrame()
    {
        while (_bundleMessagesOnEndOfFrame)
        {
            // Wait.
            yield return(_endOfFrameYield);

            // Prepare for composing bundle.
            _endOfFrameTimeTag.time = _dateTime;
            int cacheIndex = 0;
            OscBundle.TryWriteHeader(_endOfFrameTimeTag, _cache, ref cacheIndex);

            // Loop through serialized messages in the end-of-frame-buffer.
            int bufferIndex = 0;
            for (int m = 0; m < _endOfFrameBuffer.count; m++)
            {
                // Compute size.
                int messageSize = _endOfFrameBuffer.GetSize(m);                   // Bundle stores size of each message in a 4 byte integer.

                // Check limit.
                if (_splitBundlesAvoidingBufferOverflow && cacheIndex + FourByteOscData.byteCount + messageSize >= _udpBufferSize)
                {
                    // We have reached the safelty limit, now send the bundle.
                    TrySendCache(cacheIndex);

                    // Get ready for composing next bundle.
                    cacheIndex = OscConst.bundleHeaderSize;
                }

                // Write message size and data.
                new FourByteOscData(messageSize).TryWriteTo(_cache, ref cacheIndex);
                Buffer.BlockCopy(_endOfFrameBuffer.data, bufferIndex, _cache, cacheIndex, messageSize);
                bufferIndex += messageSize;
                cacheIndex  += messageSize;
            }

            // Send bundle if there is anything in it and clean.
            if (cacheIndex > OscConst.bundleHeaderSize)
            {
                TrySendCache(cacheIndex);
            }
            _endOfFrameBuffer.Clear();
        }

        _endOfFrameCoroutine = null;
    }
コード例 #26
0
        private void OnBundle(FROM from, OscBundle bundle)
        {
            for (int i = 0; i < bundle.Count; i++)
            {
                switch (bundle[i])
                {
                //Messageを受信した
                case OscMessage msg:
                    OnMessage(from, msg);
                    break;

                default:
                    //Do noting
                    break;
                }
            }
        }
コード例 #27
0
        private OscBundle CreateBundle()
        {
            var ipAddress      = _setting.UseLoopback ? IPAddress.Loopback : IPAddress.Parse(_setting.IpAddress);
            var sourceEndPoint = new IPEndPoint(ipAddress, _setting.Port);
            var bundle         = new OscBundle(sourceEndPoint);

            var nestedBundle = new OscBundle(sourceEndPoint);

            foreach (var bindValue in _setting.BindValues)
            {
                var message = new OscMessage(sourceEndPoint, bindValue.Address);
                message.Append(bindValue.Value);
                nestedBundle.Append(message);
            }
            bundle.Append(nestedBundle);
            return(bundle);
        }
コード例 #28
0
        public OscClient Send(string address, bool convertDoubleToFloat, params object[] data)
        {
            //            this.sender.WaitForAllMessagesToComplete();

            this.log.Information("Sending to {0}", address);

            if (data == null || data.Length == 0)
            {
                // Send empty message
                var oscMessage = new OscMessage(address);

                lock (lockObject)
                {
                    this.sender.Send(oscMessage);
                }
            }
            else
            {
                this.log.Information("   Data {0}", string.Join(" ", data));

                var sendData = new object[data.Length];
                for (int i = 0; i < data.Length; i++)
                {
                    if (convertDoubleToFloat && data[i] is double)
                    {
                        sendData[i] = (float)((double)data[i]);
                    }
                    else
                    {
                        sendData[i] = data[i];
                    }
                }

                var oscMessage = new OscMessage(address, sendData);
                var oscPacket  = new OscBundle(0, oscMessage);

                lock (lockObject)
                {
                    this.sender.Send(oscPacket);
                }
            }

            return(this);
        }
コード例 #29
0
        // Update is called once per frame
        protected void Update()
        {
            if (port == -1)
            {
                port = 12001;
            }
            OscBundle p = (OscBundle)listener.Receive();

            if (p != null)
            {
                Debug.Log("Receiving OSC");
                int count = 0;
                foreach (OscMessage m in p.Messages)
                {
                    HandleOSCMeassage(m, count);
                    count++;
                }
            }
        }
コード例 #30
0
        public void OscBundleManyMessagesTest_1()
        {
            OscBundle expected = new OscBundle(new OscTimeTag(0),
                                               new OscMessage("/ping"), new OscMessage("/moop"), new OscMessage("/ping"), new OscMessage("/ping"), new OscMessage("/ping"));

            byte[] bytes = expected.ToByteArray();

            OscBundleRaw actual = new OscBundleRaw(new ArraySegment <byte>(bytes, 0, bytes.Length));

            Assert.Equal(actual.Count, expected.Count);

            for (int i = 0; i < actual.Count; i++)
            {
                OscMessageRaw raw             = actual[i];
                OscMessage    expectedMessage = expected[i] as OscMessage;

                Assert.Equal(raw.Address, expectedMessage.Address);
            }
        }
コード例 #31
0
ファイル: JSonExtensions.cs プロジェクト: colombod/eDrive.OSC
        private static void Serialise(OscBundle bundle, JsonTextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            writer.WritePropertyName("address");
            writer.WriteValue(bundle.Address);
            writer.WritePropertyName("timeTag");
            writer.WriteValue(bundle.TimeStamp.TimeTag);
            var messages = bundle.Messages;

            if (messages != null &&
                messages.Count > 0)
            {
                writer.WritePropertyName("messages");
                writer.WriteStartArray();
                for (var i = 0; i < messages.Count; i++)
                {
                    writer.WriteStartObject();
                    Serialise(messages[i], writer);
                    writer.WriteEndObject();
                }
                writer.WriteEndArray();
            }

            var bundles = bundle.Bundles;

            if (bundles != null &&
                bundles.Count > 0)
            {
                writer.WritePropertyName("bundles");
                writer.WriteStartArray();
                for (var i = 0; i < bundles.Count; i++)
                {
                    writer.WriteStartObject();
                    Serialise(bundles[i], writer);
                    writer.WriteEndObject();
                }
                writer.WriteEndArray();
            }
        }
コード例 #32
0
        private void Builder_BundleComplete(ulong packetID, OscBundle bundle)
        {
            BundleComplete?.Invoke(packetID, bundle);

            if (builder.Mode != OscPackageBuilderMode.PackagedAndQueued)
            {
                sender.Send(bundle);
                return;
            }

            queue.Enqueue(new QueuedOscBundle()
            {
                PacketID = packetID, Bundle = bundle
            });

            if (queue.Count == 1)
            {
                Pump();
            }
        }
コード例 #33
0
ファイル: OscIn.cs プロジェクト: johnchoi313/FAMbot
 void EnqueueMessagesInBundle(OscBundle bundle)
 {
     foreach (OscPacket packet in bundle.packets)
     {
         if (packet is OscMessage)
         {
             OscMessage message = packet as OscMessage;
             if (_addTimeTagsToBundledMessages)
             {
                 message.args.Add(bundle.timeTag);
             }
             EnqueueMessage(message);
         }
         else
         {
             // Call recursively until all messages have been unpacked
             EnqueueMessagesInBundle(packet as OscBundle);
         }
     }
 }
コード例 #34
0
        public void SendMessage(SensorData sensor1Data, SensorData sensor2Data)
        {
            OscBundle sBundle = new OscBundle(_sourceEndPoint);

            OscMessage dataOscMessage = CreateOscMessage(sensor1Data);

            sBundle.Append(dataOscMessage);

            dataOscMessage = CreateOscMessage(sensor2Data);
            sBundle.Append(dataOscMessage);

            _oscMessageQueue.Enqueue(dataOscMessage);

            //MemoryStream memoryStream = new MemoryStream();
            //Resources.Image.Save(memoryStream, ImageFormat.Jpeg);

            //oscMessage.Append(memoryStream.ToArray());

            //sSendMessages = false;
        }
コード例 #35
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
        public static void RoundStart(int goalShape, int orientation, IntPtr goalShapeStatus) 
        {
            //Console.WriteLine("Sending Round Start");
            OscBundle bundle = new OscBundle();
            bundle.AddElement(new OscElement("/roundstart"));
            //send bundle
            OSCSender.Send(bundle);

            int[] goalShapes = new int[4*6];
            Marshal.Copy(goalShapeStatus, goalShapes, 0, 4*6);

            logger.AddLogWithTime("RoundStart " + numPhotos + " " + goalShape + " " + orientation, goalShapes);
        }
コード例 #36
0
ファイル: OscService.cs プロジェクト: vincenthamm/ATF
        /// <summary>
        /// Sends a single packet synchronously to each destination device, with the given pairs
        /// of OSC addresses and data objects</summary>
        /// <param name="addressesAndData">The list of pairs</param>
        /// <param name="first">The index of the first pair to send</param>
        /// <param name="count">The number of pairs to send</param>
        protected void SendPacket(IList<Tuple<string, object>> addressesAndData, int first, int count)
        {
            if (addressesAndData.Count < first + count)
                return;

            OscPacket packet;
            if (count == 1)
            {
                packet = new OscMessage(ReceivingEndpoint, addressesAndData[first].Item1, addressesAndData[first].Item2);
            }
            else
            {
                var bundle = new OscBundle(ReceivingEndpoint, null);
                for (int i = first; i < first + count; i++)
                {
                    Tuple<string, object> tuple = addressesAndData[i];
                    var message = new OscMessage(ReceivingEndpoint, tuple.Item1, tuple.Item2);
                    bundle.Append(message);
                }
                packet = bundle;
            }

            foreach (IPEndPoint destination in DestinationEndpoints)
            {
                packet.Send(destination);
                NumMessagesEverSent++;
            }
        }
コード例 #37
0
 /// <summary>
 /// Raises the BundleReceivedEvent.
 /// </summary>
 /// <param name="bundle">The packet to include in the event arguments.</param>
 private void OnBundleReceived(OscBundle bundle)
 {
     if (BundleReceived != null)
     {
         BundleReceived(this, new OscBundleReceivedEventArgs(bundle));
     }
 }
コード例 #38
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
 public static void Countdown(int timeRemaining)
 {
     OscBundle bundle = new OscBundle();
     //HACK no countdown bundle.AddElement(new OscElement("/countdown/" + timeRemaining));
     //send bundle
     OSCSender.Send(bundle);
 }
コード例 #39
0
        /// <summary>
        /// Raises the <see cref="BundleReceived"/> event.
        /// </summary>
        /// <param name="bundle">The packet to include in the event arguments.</param>
        private void OnBundleReceived(OscBundle bundle)
        {
            if (BundleReceived != null)
            {
                BundleReceived(this, new OscBundleReceivedEventArgs(bundle));
            }

            foreach (object value in bundle.Data)
            {
                if (value is OscBundle)
                {
                    // Raise events for nested bundles
                    OnBundleReceived((OscBundle)value);
                }
                else if (value is OscMessage)
                {
                    // Raised events for contained messages
                    OscMessage message = (OscMessage)value;
                    if (mFilterRegisteredMethods)
                    {
                        if (mRegisteredMethods.Contains(message.Address))
                        {
                            OnMessageReceived(message);
                        }
                    }
                    else
                    {
                        OnMessageReceived(message);
                    }
                }
            }
        }
コード例 #40
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
 public static void HoldingFail(int player)
 {
     OscBundle bundle = new OscBundle();
     bundle.AddElement(new OscElement("/holdfail" + player));
     //send bundle
     OSCSender.Send(bundle);
 }
コード例 #41
0
		/// <summary>
		/// Creates a new instance of OscBundleReceivedEventArgs
		/// </summary>
		/// <param name="bundle">The OscBundle received.</param>
		public OscBundleReceivedEventArgs(OscBundle bundle)
		{
			Assert.ParamIsNotNull(bundle);

			mBundle = bundle;
		}
コード例 #42
0
        public void sendSkeletonData(Skeleton skeleton_data, int i )
        {
            IPEndPoint sourceEndPoint = new IPEndPoint(IPAddress.Loopback, Port);
            OscBundle sBundle = new OscBundle(sourceEndPoint);
            //OscMessage sMessage = new OscMessage(sourceEndPoint, "/skeleton", client);

            foreach (Joint joint in skeleton_data.Joints)
            {
                if (this.oscCheck.IsChecked.HasValue && this.oscCheck.IsChecked.Value)
                {
                    OscMessage oscMessage = new OscMessage(sourceEndPoint, "/skeleton", client);
                    oscMessage.Append(joint.JointType.ToString());
                    oscMessage.Append(i.ToString());
                    oscMessage.Append(joint.Position.X.ToString());
                    oscMessage.Append(joint.Position.Y.ToString());
                    oscMessage.Append(joint.Position.Z.ToString());
                    oscMessage.Send(Destination);
                }

            }
        }
コード例 #43
0
ファイル: OscClient.cs プロジェクト: HakanL/animatroller
        public OscClient Send(string address, bool convertDoubleToFloat, params object[] data)
        {
            //            this.sender.WaitForAllMessagesToComplete();

            log.Info("Sending to {0}", address);

            if (data == null || data.Length == 0)
            {
                // Send empty message
                var oscMessage = new OscMessage(address);

                lock (lockObject)
                {
                    this.sender.Send(oscMessage);
                }
            }
            else
            {
                log.Info("   Data {0}", string.Join(" ", data));

                var sendData = new object[data.Length];
                for (int i = 0; i < data.Length; i++)
                {
                    if (convertDoubleToFloat && data[i] is double)
                        sendData[i] = (float)((double)data[i]);
                    else
                        sendData[i] = data[i];
                }

                var oscMessage = new OscMessage(address, sendData);
                var oscPacket = new OscBundle(0, oscMessage);

                lock (lockObject)
                {
                    this.sender.Send(oscPacket);
                }
            }

            return this;
        }
コード例 #44
0
    public static new bool FromBytes( byte[] data, ref int pos, int end, out OscPacket packet )
    {
        // Check header size
        int bundleByteSize = end - pos;
        if( bundleByteSize < headerByteSize ){
            Debug.LogWarning( "[OSC io] OscBundle with invalid header was ignored." + Environment.NewLine );
            packet = null;
            return false;
        }

        // Check prefix
        string prefixInput = Encoding.ASCII.GetString( data, pos, prefixByteSize );
        if( prefixInput != prefix ){
            Debug.LogWarning( "[OSC io] OscBundle with invalid header was ignored." + Environment.NewLine );
            packet = null;
            return false;
        }
        pos += prefixByteSize + 1; // + 1 to ensure bytes multiple of 4

        // Get timetag
        byte[] oscNtpBytes = new byte[OscTimeTag.byteSize];
        Array.Copy( data, pos, oscNtpBytes, 0, OscTimeTag.byteSize );
        OscTimeTag timeTag = new OscTimeTag( oscNtpBytes );
        pos += OscTimeTag.byteSize;

        // Create and fill bundle
        packet = new OscBundle( timeTag );
        OscBundle bundle = packet as OscBundle;
        while( pos < end )
        {
            int length = BitConverter.ToInt32( data, 0 );
            pos += 4;
            int packetEnd = pos + length;
            OscPacket subPacket;
            if( pos < end && OscPacket.FromBytes( data, ref pos, packetEnd, out subPacket ) ) bundle.Add( subPacket );
        }

        return true;
    }
コード例 #45
0
        // This function sends both how many skeletons are in the frame, and where they are
        private void sendOSCSkeletonPositions(object sender, SkeletonFrameReadyEventArgs e)
        {
            sendOSCSkeletonCount();
            List<Skeleton> skeletonList = kinectGroup.getMasterSkeletons();
            OscBundle oscBundle = new OscBundle();
            int skeletonNum = 0;

            float xScale = sanitizeTextToFloat(XScaleTextBox.Text);
            float xOffset = sanitizeTextToFloat(XOffsetTextBox.Text);
            float yScale = sanitizeTextToFloat(YScaleTextBox.Text);
            float yOffset = sanitizeTextToFloat(YOffsetTextBox.Text);

            foreach (Skeleton s in skeletonList){
                var oscMessage = new OscElement("/skeletonPosition",
                                               skeletonNum,
                                               (float)(s.Position.X * SCREEN_WIDTH_PX_M_RATIO * xScale + xOffset),
                                               (float)(s.Position.Y * SCREEN_HEIGHT_PX_M_RATIO * yScale + yOffset),
                                               (float)(s.Position.Z * SCREEN_WIDTH_PX_M_RATIO * xScale + xOffset),
                                               (int)(s.TrackingId));
                oscBundle.AddElement(oscMessage);
                skeletonNum++;
            }
            oscWriter.Send(oscBundle);
        }
        OscBundle skeleton2DdataCoordEventArgsToOSCBundle(Skeleton2DdataCoordEventArgs e)
        { 
            //Bundles are collections of messages
            OscBundle bundle = new OscBundle(transmitter_ipendpoint);
            //Messages are like packets, label with their type by method name
            OscMessage message = new OscMessage(transmitter_ipendpoint, DEMO_METHOD);
            //Both bundles and messages can be nested
            //Must have at least one bundle and on message

            //Send the whole skeleton
            //First send the index
            message.Append(e.index);
            //Then append each point in order, x then y
            int num_points = e._points.Count();
            for (int i = 0; i < num_points; i++)
            {
                Point normalized_point = normalize_skeleton_point(e._points[i]);
                message.Append((float)normalized_point.X);
                message.Append((float)normalized_point.Y);
            }
            bundle.Append(message);
            return bundle;
        }
コード例 #47
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
 public static void ShapeCompleted(int winner, int scoreP1, int scoreP2)
 {
     OscBundle bundle = new OscBundle();
     bundle.AddElement(new OscElement("/pwins", winner));
     //send bundle
     OSCSender.Send(bundle);
     
     logger.AddLogWithTime("Win " + winner + " " + scoreP1 + " " + scoreP2);
 }
コード例 #48
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
 public static void GameStart() //not used.
 {
     OscBundle bundle = new OscBundle();
     bundle.AddElement(new OscElement("/gamestart"));
     //send bundle
     OSCSender.Send(bundle);
 }
コード例 #49
0
        private static void SendALive(OscBundle bundle)
        {
            oscWriter.SendBundle(bundle);

            //DisplayBundle(bundle);
        }
コード例 #50
0
        //Return an OSC bundle for skeleton index provided
        /*
        OscBundle skeletonToOSCBundle(Skeleton s, int index)
        {
            Skeleton2DdataCoordEventArgs e = Skeleton2DDataExtract.skeletonToSkeleton2DdataCoordEventArgs(s, index);
            return skeleton2DdataCoordEventArgsToOSCBundle(e);
        }
         */

        OscBundle skeleton2DdataCoordEventArgsToOSCBundle(Skeleton2DdataCoordEventArgs e)
        { 
            //Bundles are collections of messages
            OscBundle bundle = new OscBundle(transmitter_ipendpoint);
            //Messages are like packets, label with their type by method name
            OscMessage message = new OscMessage(transmitter_ipendpoint, SKELETON_METHOD);
            //Both bundles and messages can be nested
            //Must have at least one bundle and on message

            //Send the whole skeleton
            //Send packet number
            message.Append(sent_bundles);
            //Debug.WriteLine("Sent bundle: " + sent_bundles);
            //Send the index
            message.Append(e.index);
            //Then append each point in order, x then y
            int num_points = e._points.Count();
            for (int i = 0; i < num_points; i++)
            {
                Point normalized_point = normalize_skeleton_point(e._points[i]);
                message.Append((float)normalized_point.X);
                message.Append((float)normalized_point.Y);
            }
            message.Append(kinect_id); //#19
            //There are 19 things appended to this message. If you add more,
            //you must change the numSkeletonOSCArgs in the c++ code

            bundle.Append(message);
            return bundle;
        }
コード例 #51
0
 void Awake()
 {
     _endOfFrameBundle = new OscBundle();
     if( enabled && Application.isPlaying && _openOnAwake ) Open( _port, _ipAddress );
 }
コード例 #52
0
        public void SendMessage(SensorData sensor1Data, SensorData sensor2Data)
        {
            OscBundle sBundle = new OscBundle(_sourceEndPoint);

            OscMessage dataOscMessage = CreateOscMessage(sensor1Data);
            sBundle.Append(dataOscMessage);

            dataOscMessage = CreateOscMessage(sensor2Data);
            sBundle.Append(dataOscMessage);

            _oscMessageQueue.Enqueue(dataOscMessage);

            //MemoryStream memoryStream = new MemoryStream();
            //Resources.Image.Save(memoryStream, ImageFormat.Jpeg);

            //oscMessage.Append(memoryStream.ToArray());

            //sSendMessages = false;
        }
コード例 #53
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
        public static void Timeout()
        {
            OscBundle bundle = new OscBundle();
            bundle.AddElement(new OscElement("/timeout"));
            //send bundle
            OSCSender.Send(bundle);

            logger.AddLogWithTime("Timeout");
        }
コード例 #54
0
ファイル: Program.cs プロジェクト: NBLANCHE/Project
        public static void ShapeStatus(int shape1, int shape2)
        {
            //Console.WriteLine("Got Shape Status");

            OscBundle bundle = new OscBundle();
            bundle.AddElement(new OscElement("/shape1/" + shape1));
            bundle.AddElement(new OscElement("/shape2/" + shape2));
            //send bundle
            OSCSender.Send(bundle);
        }
コード例 #55
0
 /// <summary>
 /// Sends a skeleton's position and depth via OSC
 /// </summary>
 /// <param name="skeleton">skeleton to send</param>
 private void SendSkeletonOsc(Skeleton skeleton)
 {
     OscBundle b = new OscBundle();
     b.AddElement(GetOscJointMessage(skeleton, JointType.AnkleLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.AnkleRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.ElbowLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.ElbowRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.FootLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.FootRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.HandLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.HandRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.Head));
     b.AddElement(GetOscJointMessage(skeleton, JointType.HipCenter));
     b.AddElement(GetOscJointMessage(skeleton, JointType.HipLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.HipRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.KneeLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.KneeRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.ShoulderCenter));
     b.AddElement(GetOscJointMessage(skeleton, JointType.ShoulderLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.ShoulderRight));
     b.AddElement(GetOscJointMessage(skeleton, JointType.Spine));
     b.AddElement(GetOscJointMessage(skeleton, JointType.WristLeft));
     b.AddElement(GetOscJointMessage(skeleton, JointType.WristRight));
     OSCsend.Send(b);
 }
コード例 #56
0
ファイル: TuioKinect.cs プロジェクト: intuilab/KinectIA
        private OscBundle GetFrameBundle()
        {
            OscBundle bundle = new OscBundle(_ipEndPoint);

            bundle.Append(GetAliveMessage());
            foreach (OscMessage msg in GetCursorMessages())
            {
                bundle.Append(msg);
            }
            bundle.Append(GetSequenceMessage());

            return bundle;
        }
コード例 #57
0
 public static void SendOSCMessages(List<string> Addresses)
 {
     sourceEndPoint = new IPEndPoint(serverIPAddress, 53000);
     OscBundle bundle = new OscBundle(sourceEndPoint);
     foreach (string Address in Addresses)
         bundle.Append(OSCMessage.CreateMessage(Address));
     bundle.Send(sourceEndPoint);
 }