void packetReceived(OSCPacket packet) { //Debug.Log("got packet"); OSCMessage msg = (OSCMessage)packet; switch(msg.Address) { case "/k2s/body/entered": Debug.Log("body entered : "+ (int)msg.Data[0]); addBody((int)msg.Data[0]); break; case "/k2s/body/left": Debug.Log("body left"); int bodyID = (int)msg.Data[0]; if(bodies.ContainsKey(bodyID)) { orderedBodies.Remove(bodies[bodyID]); bodies.Remove(bodyID); orderedBodies.Sort(delegate (K2SBody x, K2SBody y) { return y.age.CompareTo(x.age); }); if (bodyLeft != null) bodyLeft(bodyID); } break; case "/k2s/body/update": bodyID = (int)msg.Data[0]; if (!bodies.ContainsKey(bodyID)) addBody(bodyID); bodies[bodyID].update((int)msg.Data[1],(int)msg.Data[2]); break; case "/k2s/joint": bodyID = (int)msg.Data[0]; K2SJoint.JointType jointType = (K2SJoint.JointType)(int)msg.Data[1]; K2SJoint joint = bodies[bodyID].joints[jointType]; Vector3 position = new Vector3((float)msg.Data[2], (float)msg.Data[3], (float)msg.Data[4]); Quaternion orientation = Quaternion.Euler((float)msg.Data[5], (float)msg.Data[6], (float)msg.Data[7]); int trackingState = (int)msg.Data[8]; joint.update((position-originOffset)*scaleFactor, orientation, trackingState); break; case "/k2s/primary": primaryJointsSelected = (int)msg.Data[0] == 1; break; case "/k2s/secondary": secondaryJointsSelected = (int)msg.Data[0] == 1; break; } }
public async void Send(OSCPacket message) { using (var stream = await Socket.GetOutputStreamAsync(new HostName(_ip), PORT)) using (var writer = new DataWriter(stream)) { writer.WriteBytes(message.BinaryData); await writer.StoreAsync(); } await Task.Delay(1); }
private void OnPacketReceivedEvent(OSCServer sender, OSCPacket packet) { // Send something from PureData and it shows up in the Unity console if (packet.Address.StartsWith("/muse/elements/experimental/concentration")) { manager.message(ServerName, "concentration",packet.Data[0]); }/*else if(packet.Address.StartsWith("/muse/elements/blink")){ manager.message(ServerName, "blink", packet.Data[0]); }*/else if(packet.Address.StartsWith("/muse/elements/touching_forehead")){ manager.message(ServerName, "touching", packet.Data[0]); } //Debug.Log(packet.Address + ": " + DataToString(packet.Data)); }
void OSCReceicePacket(OSCServer s, OSCPacket p) { if(p.Address.Equals("/muse/elements/raw_fft0")) { //Debug.Log("Receiving FFT!"); //Debug.Log(test.Count); //fftqueue.Enqueue(packet.Data); for(int i=0; i< fftarr.Length; i++) { fftarr[i]=(float)p.Data[i]; //Debug.Log(fftarr[i]); } } }
private void OnPacketReceivedEvent(OSCServer sender, OSCPacket packet) { lock (this) { // Send something from PureData and it shows up in the Unity console if (packet.Address.Equals ("/muse/acc")) { acc = new Vector3 ((float)packet.Data [0], (float)packet.Data [1], (float)packet.Data [2]); //Debug.Log (acc); //Debug.Log(packet.Address + ": " + DataToString(packet.Data)); } } lock (this) { // Send something from PureData and it shows up in the Unity console if (packet.Address.Equals ("/muse/elements/blink")) { blink = ((int)packet.Data [0]); //Debug.Log (blink); } } lock (this) { // Send something from PureData and it shows up in the Unity console if (packet.Address.Equals ("/muse/elements/horseshoe")) { isMuseOn = DataToString(packet.Data); } } lock (this) { // Send something from PureData and it shows up in the Unity console if (packet.Address.Equals ("/muse/elements/experimental/mellow")) { mellowScore = ((float)packet.Data [0]); //Debug.Log (mellowScore); } } // Send something from PureData and it shows up in the Unity console //if (packet.Address.Equals ("/muse/elements/experimental/concentration")) { // concentration = new Vector3 ((float)packet.Data [0], (float)packet.Data [1], (float)packet.Data [2]); // Debug.Log (concentration); //Debug.Log(packet.Address + ": " + DataToString(packet.Data)); //} }
void HandleMessage(OSCPacket mes) { //Debug.Log("message received : " + mes.Address.ToString()); switch (mes.Address.ToString().ToLower()) { case "/iss/tracker": string serial = mes.Data[0].ToString(); if (GetTrackerPrefab(serial) != null) { if (!trackers.ContainsKey(serial)) { lock (lockObject) { trackersToCreate.Add(serial); } } else if (mes.Data.Count >= 8) { Vector3 p = new Vector3(); p.x = float.Parse(mes.Data[1].ToString()); p.y = float.Parse(mes.Data[2].ToString()); p.z = float.Parse(mes.Data[3].ToString()); Quaternion q = new Quaternion(); q.x = float.Parse(mes.Data[4].ToString()); q.y = float.Parse(mes.Data[5].ToString()); q.z = float.Parse(mes.Data[6].ToString()); q.w = float.Parse(mes.Data[7].ToString()); int stab = -1; if (mes.Data.Count > 8) { stab = int.Parse(mes.Data[8].ToString()); } TrackerObject tObj = trackers[serial]; tObj.update(p, q, stab); } } break; default: break; } }
public override void Unpack(OSCPacket _packet) { object obj = _packet.Data[0]; System.Type type = obj.GetType(); if (type == typeof(string)) { Value = (string)obj; } /* * else if (type == typeof(byte) ) { value = (byte)obj; } * else if (type == typeof(int) ) { value = (int)obj; } * else if (type == typeof(long) ) { value = (int) ((long)obj); } * else if (type == typeof(float) ) { value = (int) ((float)obj); } * else if (type == typeof(double)) { value = (int) ((double)obj); } */ }
/// <summary> /// Callback when a message is received. It stores the messages in a list of the oscControl void OnPacketReceived(string serverId, OSCPacket packet) { // Remember origin //packet.server = server; //// Limit buffer //if (packets.Count > _loglength) //{ // packets.RemoveRange(0, packets.Count - _loglength); //} //// Add to OSCPackets list //packets.Add(packet); if (PacketRecievedEvent != null) { PacketRecievedEvent(serverId, packet); } }
private static void Server_MessageReceived(OSCServer sender, OSCPacket e) { if (OnAmpmMessage == null) { return; } string name = e.Address.Replace("/", string.Empty); string json = e.Data.FirstOrDefault() as string; JSONNode data = null; if (json != null) { data = JSON.Parse(json); } OnAmpmMessage(null, new Tuple <string, JSONNode>(name, data)); }
#pragma warning restore public void Evaluate(int SpreadMax) { if (!FInput.IsChanged) { return; } if ((FInput.SliceCount == 0) || (FInput[0] == null) || (FInput[0].Length == 0)) { return; } SpreadMax = FInput.SliceCount; FOutput.SliceCount = SpreadMax; for (int i = 0; i < SpreadMax; i++) { FOutput[i].SliceCount = 0; MemoryStream ms = new MemoryStream(); FInput[i].Position = 0; FInput[i].CopyTo(ms); byte[] bytes = ms.ToArray(); int start = 0; OSCPacket packet = OSCPacket.Unpack(bytes, ref start, (int)FInput[i].Length); if (packet.IsBundle()) { var packets = ((OSCBundle)packet).Values; foreach (OSCPacket innerPacket in packets) { MemoryStream memoryStream = new MemoryStream(innerPacket.BinaryData); FOutput[i].Add(memoryStream); } } else { MemoryStream memoryStream = new MemoryStream(packet.BinaryData); FOutput[i].Add(memoryStream); } } FOutput.Flush(); }
public static List <OSCConsolePacket> LoadConsoleMessages(string filePath) { var list = new List <OSCConsolePacket>(); if (!File.Exists(filePath)) { SaveConsoleMessages(filePath, list); return(list); } var document = new XmlDocument(); try { document.Load(filePath); var rootElement = document.FirstChild; foreach (XmlNode messageElement in rootElement.ChildNodes) { var consoleMessage = new OSCConsolePacket(); var instanceAttribute = messageElement.Attributes["info"]; consoleMessage.Info = instanceAttribute.InnerText; var typeAttribute = messageElement.Attributes["type"]; consoleMessage.PacketType = (OSCConsolePacketType)Enum.Parse(typeof(OSCConsolePacketType), typeAttribute.InnerText); var packetElement = messageElement["packet"]; consoleMessage.Packet = OSCPacket.FromBase64String(packetElement.InnerText); list.Add(consoleMessage); } } catch (Exception e) { Debug.LogFormat("[OSCConsole] Error: {0}", e); list.Clear(); } return(list); }
/// <summary> /// Called when [packet received]. /// </summary> /// <param name="server">The distant server that sent the packet.</param> /// <param name="packet">The packet received.</param> private void OnPacketReceived(OSCServer server, OSCPacket packet) { bool handled = false; foreach (OscSubscriber sub in this._serverSubscriber) { Match m = sub.topicRegex.Match(packet.Address); if (m.Success) { handled = true; sub.callback(packet.Address, packet, m.Groups); } } if (!handled) { // If not handled => print it Debug.LogFormat("OSC Message received on {0} : {1}", packet.Address, packet.Data.Select(d => d.ToString()).Aggregate((a, b) => a + " " + b)); } }
// Process OSC message private void receivedOSC(OSCPacket pckt) { if (pckt == null) { Debug.Log("Empty packet"); return; } // Origin int serverPort = pckt.server.ServerPort; // Address string address = pckt.Address.Substring(1); // Data at index 0 string data0 = pckt.Data.Count != 0 ? pckt.Data[0].ToString() : "null"; // Print out messages Debug.Log("Input port: " + serverPort.ToString() + "\nAddress: " + address + "\nData [0]: " + data0); }
protected override void OnMessageDequeue(WebSocketSharp.MessageEventArgs message) { // statsSumary.AddBytesRecieved(message.RawData.Length); OSCPacket oscpacket = OSCPacket.Unpack(message.RawData); if (oscpacket.Address == "/message") { DebugClient("recieved messaget " + oscpacket.GetString(0)); } if (oscpacket != null) { OnOSCMessage(oscpacket as OSCMessage); // DebugClient("recieved " + oscpacket.Address); } else { DebugClient("unpacking osc messge failed " + message.Data); } }
void didRecievedEvent(OSCServer sender, OSCPacket packet) { lock (_queue) { if (packet.IsBundle()) { var bundle = packet as OSCBundle; foreach (object obj in bundle.Data) { OSCMessage msg = obj as OSCMessage; _queue.Enqueue(msg); } } else { _queue.Enqueue(packet as OSCMessage); } } }
/// <summary> /// Callback when a message is received. It stores the messages in a list of the oscControl void OnPacketReceived(OSCServer server, OSCPacket packet) { // Remember origin packet.server = server; // Limit buffer if (packets.Count > _loglength) { packets.RemoveRange(0, packets.Count - _loglength); } // Add to OSCPackets list packets.Add(packet); // handle callback (if any) foreach (OSCListener callback in callbacks) { callback.OnOSC(packet); } }
public void SendPacket(OSCPacket packet) { if (clients == null) { return; } if (debugDataStream) { DumpPacket("Sending", packet); } foreach (OSCClient client in clients.Values) { if (client != clientToExclude) { client.Send(packet); } } }
private void OscServerOnPacketReceivedEvent(OSCServer sender, OSCPacket packet) { if (!packet.Address.Equals("/wek/outputs")) { return; } var gestureStart = (float)packet.Data[0]; var gestureEnd = (float)packet.Data[1]; if (gestureStart > 0.9 && gestureEnd < 0.1) { Debug.Log("Starting gesture!"); } if (gestureStart < 0.1 && gestureEnd > 0.9) { Debug.Log("Gestured ended!"); } }
void Update() { while (0 < queue.Count) { OSCPacket packet = queue.Dequeue() as OSCPacket; if (packet.IsBundle()) { OSCBundle bundle = packet as OSCBundle; foreach (OSCMessage msg in bundle.Data) { Receive(msg); } } else { OSCMessage msg = packet as OSCMessage; Receive(msg); } } }
public void Send(OSCPacket packet) { if (useBundle && packet != null && (packet is OSCMessage)) { _packetPool.Add(packet); return; } if (mapBundle != null) { mapBundle.Map(packet); } var data = OSCConverter.Pack(packet); transmitterBackend.Send(data); OSCConsole.Transmitted(this, packet); }
private void dispatchPacket() { while (m_packetQueue.Count > 0) { OSCPacket packet = m_packetQueue.Dequeue(); BobLog.Instance.Log(packet.Address); if (m_Executables.ContainsKey(packet.Address)) { try { m_Executables[packet.Address].Execute(packet); } catch (System.Exception ex) { throw ex; } } } }
private void processOSCPacket(OSCPacket packet) { if (packet != null) { lastPacket = packet; if (packet.IsBundle()) { ArrayList messages = packet.Values; for (int i = 0; i < messages.Count; i++) { processMessage((OSCMessage)messages[i]); } } else { processMessage((OSCMessage)packet); } } }
// A few comments on the TUIO protocol: // Whether it is a finger or object input depends on the address ("/tuio/2Dcur" or "/tuio/2Dobj" respectively) // Information is carried in two types of messages: "alive" and "set". // "alive" block lists the touch points that are currently active, there are no explicit messages // for touch point removal. This is due to the messages being sent via UDP, so technically unreliable. // We are communicating over localhost, so could in fact use pipes and introduce a custom protocol, // but not sure if it's worth rewriting now. The amount of touch points at a time is relatively small // to cause any data processing bottleneck, so probably no. private void Listen() { Debug.Log("UDP Listener started..."); while (true) { try { byte[] receivedBytes = client.Receive(ref remoteEndpoint); if (receivedBytes.Length > 0) { lock (queueLock) { OSCBundle packet = (OSCBundle)OSCPacket.Unpack(receivedBytes); packetQueue.Enqueue(packet); } } } catch (Exception error) { Debug.LogError(error.ToString()); } } }
void Update() { //Debug.Log("Updating"); if (queue == null) { //Debug.Log("nada"); return; } while (0 < queue.Count) { //Debug.Log("HAS STUFF"); OSCPacket packet = queue.Dequeue() as OSCPacket; if (packet.IsBundle()) { // if OSCBundl OSCBundle bundle = packet as OSCBundle; foreach (OSCMessage msg in bundle.Data) { } } else { OSCMessage msg = packet as OSCMessage; //Debug.Log(msg.Address); if ("/unity_osc" == msg.Address) { //print (msg.Data[1].ToString()); var thing = msg.Data[1].ToString(); var pos = new Vector3((float)msg.Data[2], (float)msg.Data[3], (float)msg.Data[4]); //rb.MovePosition(pos); var dur = (float)packet.Data[5]; AppendItem(thing, pos, dur); } } } }
static void OnPacketReceived(OSCServer server, OSCPacket packet) { lock (live) { // OSC address is of the format /1/pushXXX, where XXX indicates the tile whose // state is changing, from 1-100 string address = packet.Address; string push = "push"; int pushIndex = address.IndexOf(push); int pushLength = push.Length; int tileNumber = Convert.ToInt32(address.Substring(pushIndex + pushLength)); float sensorState = (float)packet.Data [0]; //Debug.Log ("OSC RX: " + tileNumber + " State: " + sensorState); bool state = System.Convert.ToBoolean(sensorState); int index = tileNumber - 1; live.tiles [index] = state; if (state) { if (!live.pressed.Contains(index)) { live.pressed.Add(index); if (live.released.Contains(index)) { live.released.Remove(index); } } } else { if (!live.released.Contains(index)) { live.released.Add(index); if (live.pressed.Contains(index)) { live.pressed.Remove(index); } } } } }
public virtual bool ParsePacket(OSCPacket packet) { if (String.IsNullOrEmpty(packet.Address)) { Debug.Log("null packet address"); return(false); } // Debug.Log(baseAddressLen + " " + packet.Address); try { string address = packet.Address.Substring(baseAddressLen); // for (int i = 0; i < oscPartialBinding.Count; i++) // { // string thisString = oscPartialBinding[i].Key; // if (address.StartsWith(thisString)) // { // UseBinding(oscPartialBinding[i].Value, packet); // } // else Debug.Log("not matched"); // } Binding listener; if (oscBinding.TryGetValue(address, out listener)) { try { return(UseBinding(listener, packet)); } catch (Exception e) { Debug.LogError("Error using binding " + e.Message); if (listener.requester != null) { Debug.LogError("Binding info: " + address + " Monobehaviour: " + listener.requester.GetType().ToString() + " on gameobject " + listener.requester.name + " " + listener.objectType.ToString() + " " + listener.bindMethod.GetType().ToString()); } } } } catch (Exception e) { Debug.LogError("invalid string " + e.Message); } return(true); }
// A few comments on the TUIO protocol: // Whether it is a finger or object input depends on the address ("/tuio/2Dcur" or "/tuio/2Dobj" respectively) // Information is carried in two types of messages: "alive" and "set". // "alive" block lists the touch points that are currently active, there are no explicit messages // for touch point removal. This is due to the messages being sent via UDP, so technically unreliable. // We are communicating over localhost, so could in fact use pipes and introduce a custom protocol, // but not sure if it's worth rewriting now. The amount of touch points at a time is relatively small // to cause any data processing bottleneck, so probably no. //Run on a seperate thread, //listens to incoming UDP messages from the Surface in a loop. //When a packet is received, saves it as the last received packet. private void Listen() { Debug.Log("UDP Listener started..."); while (true) { try { byte[] receivedBytes = client.Receive(ref remoteEndpoint); if (receivedBytes.Length > 0) { lock (packetLock) { // We don't care if there are unprocessed packets already, // we care about the latest object/cursor packet only. OSCBundle packet = (OSCBundle)OSCPacket.Unpack(receivedBytes); foreach (OSCMessage msg in packet.Values) { if (msg.Address.Equals("/tuio/2Dobj")) { // It's an object packet lastObjectPacket = packet; break; } else if (msg.Address.Equals("/tuio/2Dcur")) { // It's a cursor packet lastCursorPacket = packet; break; } } } } } catch (Exception error) { Debug.LogError(error.ToString()); } } }
public void Read(byte[] data) { using (var reader = new BinaryReader(new MemoryStream(data))) { // read header var flags = reader.ReadInt32(); var compressed = flags.getFlag(0); var sampleCount = reader.ReadInt32(); sampleCount = sampleCount < 0 ? int.MaxValue : sampleCount; var payloadLength = reader.ReadInt32(); Speed = reader.ReadSingle(); Comment = System.Text.Encoding.UTF8.GetString(reader.ReadBytes(reader.ReadInt32())); // read payload var payload = reader.ReadBytes((int)(data.Length - reader.BaseStream.Position)); if (compressed) { payload = payload.Uncompress(); } var count = 0; using (var payloadReader = new BinaryReader(new MemoryStream(payload))) { // todo: check if can read is the right thing while (count < sampleCount && payloadReader.BaseStream.HasRemaining()) { var timestamp = payloadReader.ReadInt64(); var length = payloadReader.ReadInt32(); var packetData = payloadReader.ReadBytes(length); var packet = new OSCPacket(packetData); Samples.Add(new OSCSample(timestamp, packet)); count++; } } } }
public void Map(OSCPacket packet) { if (packet is OSCBundle) { var bundle = packet as OSCBundle; foreach (var bundlePacket in bundle.Packets) { Map(bundlePacket); } } else if (packet is OSCMessage) { var message = packet as OSCMessage; foreach (var mapMessage in messages) { mapMessage.Map(message); } } }
public static bool GetStringArray(this OSCPacket packet, out string[] value) { value = new string[0]; if (packet.typeTag.Length < 3) { return(false); } for (int i = 1; i < packet.typeTag.Length; i++) { if (packet.typeTag[i] != 's') { return(false); } } value = new string[packet.typeTag.Length - 1]; for (int i = 0; i < packet.typeTag.Length - 1; i++) { value[i] = packet.Data[i].ToString(); } return(true); }
public override void Unpack(OSCPacket _packet) { for (int idx = 0; idx < _packet.Data.Count; idx++) { object obj = _packet.Data[idx]; System.Type type = obj.GetType(); float value = 0; if (type == typeof(byte)) { value = ((byte)obj); } else if (type == typeof(int)) { value = ((int)obj); } else if (type == typeof(long)) { value = ((long)obj); } else if (type == typeof(float)) { value = (float)obj; } else if (type == typeof(double)) { value = (float)((double)obj); } switch (idx) { case 0: Value.x = value; break; case 1: Value.y = value; break; case 2: Value.z = value; break; default: break; } } }
// Process OSC message private void receivedOSC(OSCPacket pckt) { if (pckt == null) { Debug.Log("UNITY OSC: Recieved empty packet"); return; } float x = 0f; switch (msgMode) { case (MsgMode.P5): //x = (float) pckt.Data[0]; Debug.Log("UNITY OSC: " + pckt.Data[0]); break; case (MsgMode.OF): OSCMessage msg = pckt.Data[0] as UnityOSC.OSCMessage; //x = (float) msg.Data[0]; Debug.Log("UNITY OSC: " + msg.Data[0]); break; } /* * // Origin * int serverPort = pckt.server.ServerPort; * * // Address * string address = pckt.Address.Substring(1); * * // Data at index 0 * string data0 = pckt.Data.Count != 0 ? pckt.Data[0].ToString() : "null"; * * // Print out messages * Debug.Log("Input port: " + serverPort.ToString() + "\nAddress: " + address + "\nData [0]: " + data0); */ }
void X32_OnMeter(object sender, OSCPacket packet) { int meter = Convert.ToInt32(packet.Nodes[2]); switch (meter) { case 1: this.BeginInvoke(new ThreadSafeOSC(UpdateMeter), packet.ToParams()); break; case 14: this.BeginInvoke(new ThreadSafeOSC(UpdateMeter), packet.ToParams()); break; case 15: this.BeginInvoke(new ThreadSafeOSC(UpdateMeter), packet.ToParams()); break; default: break; } }
private void listen() { while (connected) { try { OSCPacket packet = receiver.Receive(); if (packet != null) { lock (processQueue) { //Debug.Log( "adding packets " + processQueue.Count ); if (packet.IsBundle()) { ArrayList messages = packet.Values; for (int i = 0; i < messages.Count; i++) { processQueue.Add((OSCMessage)messages[i]); } } else { processQueue.Add((OSCMessage)packet); } } } else { Console.WriteLine("null packet"); } } catch (Exception e) { Debug.Log(e.Message); Console.WriteLine(e.Message); } } }
/// Returns true if we got a full frame public bool Process(OSCPacket packet, Matrix4x4 transform) { switch (packet.Address) { case "/frame": if (packet.Values.Count >= 1) { this.Frame = (int)packet.Values[0]; } break; default: //we're in it for the money! var addressList = new List <string>(packet.Address.Split('/')); var values = packet.Values; if (this.Root.Process(addressList, values, transform)) { return(true); } break; } return(false); }
private void OnPacketReceivedEvent(OSCServer sender, OSCPacket packet) { // Send something from PureData and it shows up in the Unity console if (packet.Address.StartsWith("/player/status")){ if(Int32.Parse(packet.Data[0].ToString()) == 1){ //Player Connected! Debug.Log("Player Connected!"); main.ConnectionPlayer(true); } else if (Int32.Parse(packet.Data[0].ToString()) == 0) { //Player disconnected Debug.Log("Player disconnected!"); main.ConnectionPlayer(false); } }else if(packet.Address.StartsWith("/player/heartbeat/trigger")){ //Player heartbeat trigger Detected Debug.Log("Heartbeat"); main.HeartBeat(true); }else if(packet.Address.StartsWith("/player/heartbeat/bpm")){ //New Heartbeat BPM is in packet.Data[0] float newBpm = float.Parse(packet.Data[0].ToString()); Debug.Log("Heartbeat BPM: " + newBpm); main.SetBPM(newBpm); }else if(packet.Address.StartsWith("/player/activation")){ //Overall player activation curve value is in packet.Data[0] // min is 0. max is 1. float activation = float.Parse(packet.Data[0].ToString()); Debug.Log("Activation: " + activation); }if (packet.Address.StartsWith("/button/pressure/status")){ if (Int32.Parse(packet.Data[0].ToString()) == 1) { //Rock lifted! Debug.Log("Pressure button " + packet.Data[0]); main.RockInPlace(false); } else if (Int32.Parse(packet.Data[0].ToString()) == 0) { //Rock in Place Debug.Log("Pressure button " + packet.Data[0]); main.RockInPlace(true); } }if (packet.Address.StartsWith("/button/right/status")) { if (Int32.Parse(packet.Data[0].ToString()) == 1) { Debug.Log("Right button " + packet.Data[0]); main.UpdateStateButtons(2,1); } else if (Int32.Parse(packet.Data[0].ToString()) == 0) { Debug.Log("Right button " + packet.Data[0]); main.UpdateStateButtons(2,0); } }if (packet.Address.StartsWith("/button/center/status")) { if (Int32.Parse(packet.Data[0].ToString()) == 1) { Debug.Log("Center button " + packet.Data[0]); main.UpdateStateButtons(1,1); } else if (Int32.Parse(packet.Data[0].ToString()) == 0) { Debug.Log("Center button " + packet.Data[0]); main.UpdateStateButtons(1,0); } } if (packet.Address.StartsWith("/button/left/status")) { if (Int32.Parse(packet.Data[0].ToString()) == 1) { Debug.Log("Left button " + packet.Data[0]); main.UpdateStateButtons(0,1); } else if (Int32.Parse(packet.Data[0].ToString()) == 0) { Debug.Log("Left button " + packet.Data[0]); main.UpdateStateButtons(0,0); } } //Debug.Log(packet.Address + ": " + DataToString(packet.Data)); }
/// <summary> /// Sends an OSC packet to the defined destination and address of the client. /// </summary> /// <param name="packet"> /// A <see cref="OSCPacket"/> /// </param> public void Send(OSCPacket packet) { byte[] data = packet.BinaryData; try { _udpClient.Send(data, data.Length); } catch { //MMANDEL: this annoying fails coming out of play mode, causing OSCHandler to linger in the scene //Let's just throw a warning instead of crashing Debug.LogWarning(String.Format("Can't send OSC packet to client {0} : {1}", _ipAddress, _port)); //throw new Exception(String.Format("Can't send OSC packet to client {0} : {1}", _ipAddress, _port)); } }
/// <summary> /// Sends an OSC packet to the defined destination and address of the client. /// </summary> /// <param name="packet"> /// A <see cref="OSCPacket"/> /// </param> public void Send(OSCPacket packet) { byte[] data = packet.BinaryData; try { _udpClient.Send(data, data.Length); } catch { System.Diagnostics.Debug.WriteLine(String.Format("OSCClient.Send(): Can't send OSC packet to client {0} : {1}", _ipAddress, _port)); } }
/// <summary> /// Receives and unpacks an OSC packet. /// A <see cref="OSCPacket"/> /// </summary> private void Receive() { IPEndPoint ip = null; try { byte[] bytes = _udpClient.Receive(ref ip); if(bytes != null && bytes.Length > 0) { OSCPacket packet = OSCPacket.Unpack(bytes); _lastReceivedPacket = packet; PacketReceivedEvent(this, _lastReceivedPacket); } } catch{ throw new Exception(String.Format("Can't create server at port {0}", _localPort)); } }
private void HandleMeters(OSCPacket message) { MemoryStream stream = message.Value<MemoryStream>(); var reader = new BinaryReader(stream); int size = reader.ReadInt32(); float[] data = new float[size]; for (int i = 0; i < size; i++) data[i] = reader.ReadInt16() / 256 + 80; reader.Dispose(); stream.Dispose(); for (int i = 0; i < 8; i++) { Application.Channels[i].Meter = data[i]; } }
/// <summary> /// Thread pool that receives upcoming messages. /// </summary> public void ReceivePool() { while (true) { _lastReceivedPacket = Receive(); _lastReceivedPacket.TimeStamp = long.Parse(String.Concat(DateTime.Now.Ticks)); lock (recvPacks) { recvPacks.Add(_lastReceivedPacket); if (recvPacks.Count > _lenth - 1) { recvPacks.RemoveAt(0); } } } }
private async void OSCClient_OnReceive(OSCPacket message) { #if DEBUG var t = Task.Factory.StartNew(() => { if (!(_disableDebugOutput)) Debug.WriteLine(String.Format("Received from Device, Address: {0}, Value: {1}", message.Address, message.Value<object>())); }); #endif if (message.Address.StartsWith("/meters")) await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => HandleMeters(message)); if (Application.ReceiveFromDevice(message.Address, message.Value<object>())) return; }
/// <summary> /// Thread pool that receives upcoming messages. /// </summary> private void ReceivePool() { while(true) { _lastReceivedPacket = Receive(); _lastReceivedPacket.TimeStamp = long.Parse(String.Concat(DateTime.Now.Ticks)); } }
static void HandlePacketReceivedEvent (OSCPacket p) { Debug.Log("received message "+p.Address); //General if (p.Address.Equals("/ping")) { if (pingReceived != null) pingReceived(); }else if (p.Address.Equals("/console/active")) { if (consoleReceived != null) consoleReceived((int)p.Data[0] == 1); }else if (p.Address.Equals("/console/clear")) { if (clearConsoleReceived != null) clearConsoleReceived(); } else if (p.Address.Equals("/console/log")) { Debug.Log((string)p.Data[0]); if (logReceived != null) logReceived((string)p.Data[0]); } else if (p.Address.Equals("/glitch")) { if(glitchReceived != null) glitchReceived((int)p.Data[0], (int)p.Data[1] == 1); } //Neuron else if (p.Address.Equals("/neuron/pulse")) { if (neuronPulseReceived != null) neuronPulseReceived(p.Data.Count > 0?(int)p.Data[0]:-1); } else if (p.Address.Equals("/neuron/zoom")) { if (neuronZoomReceived != null) neuronZoomReceived(p.Data.Count > 0 ? (int)p.Data[0] : -1); }else if(p.Address.Equals("/neuron/nodeSize")) { if (nodeSizeReceived != null) nodeSizeReceived((float)p.Data[0]); } //Web else if (p.Address.Equals("/web/search/images")) { if (webSearchReceived != null) webSearchReceived("images",(string)p.Data[0]); } else if (p.Address.Equals("/web/search/opacity")) { if (webSearchOpacityReceived != null) webSearchOpacityReceived((float)p.Data[0]); } //Zones else if (p.Address.Equals("/tracking/zone")) { if (zoneReceived != null) zoneReceived((string)p.Data[0], (int)p.Data[1] == 1); } else if (p.Address.Equals("/tracking/mainZone")) { if (mainZoneReceived != null) mainZoneReceived((string)p.Data[0]); } else if (p.Address.Equals("/tracking/zonePos")) { if (zonePosReceived != null) zonePosReceived((string)p.Data[0], new Vector3((float)p.Data[1], (float)p.Data[2], (float)p.Data[3])); } //Biodata else if (p.Address.Equals("/heart")) { if (heartReceived != null) heartReceived((int)p.Data[0]); } //Emotion else if(p.Address.Equals("/emotion")) { if (emotionReceived != null) emotionReceived((string)p.Data[0], (float)p.Data[1]); }else { //DataText.log("OSC Message not handled : " + p.Address); } }
/// <summary> /// Sends an OSC packet to the defined destination and address of the client. /// </summary> /// <param name="packet"> /// A <see cref="OSCPacket"/> /// </param> async public void Send(OSCPacket packet) { byte[] data = packet.BinaryData; try { writer.WriteBytes(data);// data.Length); await writer.StoreAsync(); TestWin8Band.App.Current.StatusMessage += " > Message sent " + data.Length; } catch { throw new Exception(String.Format("Can't send OSC packet to client {0} : {1}", _ipAddress, _port)); } }
public void SendTo(OSCPacket packet,string host, int port) { byte[] data = packet.BinaryData; try { //Debug.Log("SendTo :"+host+"/"+port); _ipAddress = IPAddress.Parse(host); _port = port; //Connect (); _udpClient.Send(data, data.Length,host, port); //Debug.Log ("Sent"); } catch { Debug.LogWarning(String.Format("Can't send OSC packet to client {0} : {1}", _ipAddress, _port)); } }
/// <summary> /// Sends an OSC packet to the defined destination and address of the client. /// </summary> /// <param name="packet"> /// A <see cref="OSCPacket"/> /// </param> public void Send(OSCPacket packet) { byte[] data = packet.BinaryData; try { _udpClient.Send(data, data.Length); } catch { throw new Exception(String.Format("Can't send OSC packet to client {0} : {1}", _ipAddress, _port)); } }
public void ReceiveOSC(OSCPacket currMsg) { switch(currMsg.Address) { case "/timeChange": if( gameState == GameState.STANDBY ) gameTime = (float)(Convert.ToDecimal( currMsg.Data[0])); break; case "/startGame": if( gameState == GameState.STANDBY ) { LoadLevelBackground( (int)(Convert.ToInt32(currMsg.Data[0]))); SetState(GameState.TUTORIAL); } break; case "/skipTutorial": if( gameState == GameState.TUTORIAL ) SetState(GameState.COUNTDOWN); break; case "/endGame": if( gameState == GameState.GAME ) SetState(GameState.GAMEOVER); else if( gameState == GameState.TUTORIAL ) SetState(GameState.STANDBY); break; case "/enterConfig": if( gameState == GameState.STANDBY ) SetState(GameState.CONFIG); break; case "/centerConfig": if( gameState == GameState.CONFIG ) OVRManager.display.RecenterPose(); break; case "/exitConfig": if( gameState == GameState.CONFIG ) SetState(GameState.STANDBY); break; } }
private static void Server_MessageReceived(OSCServer sender, OSCPacket e) { if (OnAmpmMessage == null) { return; } string name = e.Address.Replace("/", string.Empty); string json = e.Data.FirstOrDefault() as string; JSONNode data = null; if (json != null) { data = JSON.Parse(json); } OnAmpmMessage(null, new Tuple<string, JSONNode>(name, data)); }