private void UpdateUI(Bitmap bitmap) //Выводим рожу { this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(delegate() { if (bitmap != null) { imageBase.RenderTransformOrigin = new System.Windows.Point(0.5, 0.5); ScaleTransform mainTransform = new ScaleTransform(); mainTransform.ScaleX = -1; mainTransform.ScaleY = 1; imageBase.RenderTransform = mainTransform; headRollResult.Text = headRoll.ToString(); var headRollMessage = new SharpOSC.OscMessage("/rotation/roll", headRoll); Sender.Send(headRollMessage); headYawResult.Text = headYaw.ToString(); var headYawMessage = new SharpOSC.OscMessage("/rotation/yaw", headYaw); Sender.Send(headYawMessage); headPitchResult.Text = headPitch.ToString(); var headPitchMessage = new SharpOSC.OscMessage("/rotation/pitch", headPitch); Sender.Send(headPitchMessage); Graphics graphics = Graphics.FromImage(bitmap); //Херачим прямоугольник System.Drawing.Pen pen = new System.Drawing.Pen(System.Drawing.Color.DeepSkyBlue); graphics.DrawRectangle(pen, faceRectangleX, faceRectangleY, faceRectangleWidth, faceRectangleHeight); imageBase.Source = BitmapToBitmapSource(bitmap); } })); }
public void ResendMixNames(int mix, List <string> channelNames) // TODO: rework { for (int label = 1; label <= MainWindow.instance.config.NUM_CHANNELS; label++) { OscMessage message = new OscMessage($"/mix{mix}/label{label}", channelNames[label - 1]); output.Send(message); } }
void sendCurrentSlide() { if (Application.Presentations.Count == 0) { return; } OscMessage m = new OscMessage("/currentSlide", Application.ActivePresentation.SlideShowWindow.View.CurrentShowPosition); sender.Send(m); }
private void Awake() { gameObject.SetActive(!bool.Parse(Config.Read(CONFIG_KEYS.audiodisable))); _appStateBroker = AppStateBroker.Instance; if (DEVELOPER_MODE) { AudioSourceOutputDevice[] channels = transform.GetComponentsInChildren <AudioSourceOutputDevice>(); foreach (AudioSourceOutputDevice c in channels) { c.enabled = false; } } SFX_Volume = float.Parse(Config.Read(CONFIG_KEYS.lanevolume)); Ambient_Volume = int.Parse(Config.Read(CONFIG_KEYS.ambientvolume)); refVolumeOffset = float.Parse(Config.Read(CONFIG_KEYS.refvolumeoffset)); CrowdVoluemOffset = float.Parse(Config.Read(CONFIG_KEYS.crowdvolumeoffset)); var message_vol = new SharpOSC.OscMessage("/maxVol", Ambient_Volume); _UdpSender.Send(message_vol); }
public void SendWithoutChunking(byte[] toSendBytes) { try { if (sender != null) { Debug.Log("Data size is " + toSendBytes.Length); sender.Send(toSendBytes, new AsyncCallback(SendCallBack)); } } catch (Exception ex) { Debug.LogError("Sending data error: " + ex.Message); } }
public void SendOscCommand(string name, float value, string ip, int port) { var message = new OscMessage(name, value); var sender = new UDPSender(ip, port); sender.Send(message); }
private void sendPIDUpdate(object sender, EventArgs e) { var message = new OscMessage("/PIDUpdate", (double)numkP.Value, (double)numkI.Value, (double)numkD.Value, (double)numkF.Value, (double)numAccel.Value, (double)numVel.Value, (double)numRamp.Value, (double)numIZone.Value, (double)numSetpoint.Value, (double)numMaxIAccum.Value); oscSender.Send(message); }
private void Update() { foreach (var train in _trains) { var message = new OscMessage(train.Id, new IPEndPoint(IPAddress.Parse("192.168.2.10"), 15670), train.CurrentSpeed); _sender.Send(message); } }
static void Main(string[] args) { do { if (int.TryParse(Console.ReadLine(), out var integer)) { var message = new OscMessage("/train/1", new IPEndPoint(IPAddress.Parse("192.168.2.10"), 15670), integer); _sender.Send(message); } }while (true); }
private void SendDataUDP(string data) { if (_udpSender == null) { _udpSender = new UDPSender(SendToIp, SendToPort); _udpSender.Connected += (sender, args) => { Debug.Log("UDP Connected hands data endpoint"); }; } _udpSender.Send(CompressDataWithGzip ? GzipCompression.Compress(data) : data); }
//public void sendRawData(Dictionary<EdkDll.EE_DataChannel_t, double[]> data) //{ // int _bufferSize = data[EdkDll.EE_DataChannel_t.TIMESTAMP].Length; // for (int i = 0; i < _bufferSize; i++) // { // sending line by line // OscMessage msg = new OscMessage("/rawEEG", ""); // msg.Arguments.Clear(); // // now write the data // foreach (EdkDll.EE_DataChannel_t channel in data.Keys) // { // msg.Arguments.Add(data[channel][i]); // } // sender.Send(msg); // } //} /// <summary> /// Sends the raw data for each sample ("line by line") in the data object. The each sample is delayed according to the time stamps of the samples. /// </summary> /// <param name="data"></param> public void sendRawDataSimple(Dictionary <EdkDll.EE_DataChannel_t, double[]> data, string sendToOSCAdress) { int _bufferSize = data[EdkDll.EE_DataChannel_t.TIMESTAMP].Length; double lastTime; for (int i = 0; i < _bufferSize; i++) { // sending line by line OscMessage msg = new OscMessage(sendToOSCAdress, ""); msg.Arguments.Clear(); // now write the data foreach (EdkDll.EE_DataChannel_t channel in data.Keys) { msg.Arguments.Add(data[channel][i]); } // try to send measseag with appropiate time intervals // to simulate it as real input as good as possible sender.Send(msg); if (i < _bufferSize - 1) { double waitTimeInSeconds = data[EdkDll.EE_DataChannel_t.TIMESTAMP][i + 1] - data[EdkDll.EE_DataChannel_t.TIMESTAMP][i]; double timeInMS = waitTimeInSeconds * 1000.0; int sleepTime = Convert.ToInt32(timeInMS); Thread.Sleep(sleepTime); } } }
// Function to send OSC messages to Linux void sendPos_polar(float pos_x, float pos_y, float pos_z, float scale) { // Calculate polar coordinates float vol = scale; float rad = Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z + pos_y * pos_y); float azi = Mathf.Atan2(pos_x, pos_z) * 180 / Mathf.PI; float ele = Mathf.Atan2(pos_y, Mathf.Sqrt(pos_x * pos_x + pos_z * pos_z)) * 180 / Mathf.PI; // Include distance for volume if (rad != 0f) { vol = vol / rad; } // Create messages 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); // Send to Linux sender.Send(msg_azi); sender.Send(msg_ele); sender.Send(msg_vol); }
public void TestDeviceHangup() { // setup var sender = new UDPSender("127.0.0.1", 5000); var adapter = new RemoteOSCAdapter(5000); adapter.AddHandler(EEGDataType.CONTACT_QUALITY, HandleConnStatus); adapter.Start(); // test that it recieves our packet var packet = new OscMessage("/muse/elements/horseshoe", new object[] { 1, 1, 1, 1 }); sender.Send(packet); while (!messageReceived) { adapter.FlushEvents(); } CheckConnStatus(new double[] { 1, 1, 1, 1 }); // test hangup Thread.Sleep(RemoteOSCAdapter.HANGUP_TIME * 2); adapter.FlushEvents(); CheckConnStatus(new double[] { 4, 4, 4, 4 }); // test recovery messageReceived = false; sender.Send(packet); while (!messageReceived) { adapter.FlushEvents(); } CheckConnStatus(new double[] { 1, 1, 1, 1 }); // teardown adapter.Stop(); }
private void TransmitDataForController(GearVRController controller) { if ((DateTime.Now - _lastTimeSent).TotalMilliseconds > 0) { try { var trackingData = controller.LatestTrackingData; var serializedStr = JsonConvert.SerializeObject(trackingData, Formatting.None); _oscClient.Send(new OscMessage($"/{controller.Name}", serializedStr, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() )); } catch (Exception ex) { logger.Info($"Failed to send OSC: {ex.Message}"); } _lastTimeSent = DateTime.Now; } }
public void sendAffectiveStateData(AffectiveState affectiveState, bool isSimulated) { sender.Send(affectiveState.toOSCMesseage()); if (isSimulated) { double waitTimeInSeconds; if (lasteTimeStamp == 0) { lasteTimeStamp = affectiveState.emotivTimeStamp; } else if (lasteTimeStamp != affectiveState.emotivTimeStamp) { waitTimeInSeconds = affectiveState.emotivTimeStamp - lasteTimeStamp; lasteTimeStamp = affectiveState.emotivTimeStamp; double timeInMS = waitTimeInSeconds * 1000.0; int sleepTime = Convert.ToInt32(timeInMS); Thread.Sleep(sleepTime); } } }
public void sendExpressivOSC(ExpressivState exprState, bool isSimulated) { sender.Send(exprState.toOSCMesseage()); if (isSimulated) { double waitTimeInSeconds; if (lasteTimeStamp == 0) { lasteTimeStamp = exprState.emotivTimeStamp; } else if (lasteTimeStamp != exprState.emotivTimeStamp) { waitTimeInSeconds = exprState.emotivTimeStamp - lasteTimeStamp; lasteTimeStamp = exprState.emotivTimeStamp; double timeInMS = waitTimeInSeconds * 1000.0; int sleepTime = Convert.ToInt32(timeInMS); Thread.Sleep(sleepTime); } } }
static void HelloIAmHere() { ReplyingToYou.Send(new OscMessage("/hello", (int)Messages.Hello)); IAmAlone = false; }
public void Attach(FM.IceLink.Conference conference, Action<Exception> callback) { try { this.Conference = conference; conference.OnLinkOfferAnswer += (e) => { try { Signal signal = new Signal(); signal.PeerId = e.PeerId; signal.DataJson = e.OfferAnswer.ToJson(); #if USE_TCP_SIGNALLING TCPSender<Signal> sender = new TCPSender<Signal> (); if (sender.Connect (IPAddress, TCP_PORT_SIGNALLING)) { sender.Send (TCP_MESSAGE_OFFER_ANSWER, signal); sender.Disconnect (); } #else UDPSender<Signal> sender = new UDPSender<Signal>(); sender.Send(TCP_MESSAGE_OFFER_ANSWER,signal,this.IPAddress,TCP_PORT_SIGNALLING); #endif } catch (Exception ex) { Console.WriteLine(ex.Message); } }; conference.OnLinkCandidate += (e) => { try { Signal signal = new Signal(); signal.PeerId = e.PeerId; signal.DataJson = e.Candidate.ToJson(); #if USE_TCP_SIGNALLING TCPSender<Signal> sender = new TCPSender<Signal> (); if (sender.Connect (IPAddress, TCP_PORT_SIGNALLING)) { sender.Send (TCP_MESSAGE_CANDIDATE, signal); sender.Disconnect (); } #else UDPSender<Signal> sender = new UDPSender<Signal>(); sender.Send(TCP_MESSAGE_CANDIDATE,signal,this.IPAddress,TCP_PORT_SIGNALLING); #endif } catch (Exception ex) { Console.WriteLine(ex.Message); } }; } catch (Exception ex) { callback(ex); } }
static void RunOptions(Options o) { Console.WriteLine("OSC will listen on port " + o.ListenPort + " and send to " + o.SendIp + ":" + o.SendPort + ""); remote.Login(); var listener = new UDPListener(o.ListenPort); var sender = new UDPSender(o.SendIp, o.SendPort); VoicemeeterType vmType = remote.GetVMType(); Console.WriteLine("Successfully connect to " + vmType + " version: " + remote.GetVMVersion()); while (true) { try { OscMessage messageReceived = (OscMessage)listener.Receive(); if (messageReceived != null) { // /vm/type/channel/cmd if (messageReceived.Address.StartsWith("/vm/")) { String[] d = messageReceived.Address.Split('/'); if (d[2] == "strip" || d[2] == "bus") { switch (d[4]) { case "gain": remote.SetParameterFloat(d[2] + "[" + d[3] + "].Gain", (float)messageReceived.Arguments[0]); break; case "mute": remote.SetParameterFloat(d[2] + "[" + d[3] + "].Mute", (float)messageReceived.Arguments[0]); break; } } } if (o.Verbose) { Console.WriteLine(messageReceived.Address + " = " + messageReceived.Arguments[0].ToString()); } } } catch (Exception e) { Console.WriteLine("Unknown exception occured: " + e.Message); } if (vmType.ToString() == VoicemeeterType.VOICEMEETER.ToString()) { } if (vmType.ToString() == VoicemeeterType.VOICEMEETER_BANANA.ToString()) { } if (vmType.ToString() == VoicemeeterType.VOICEMEETER_POATATO.ToString()) { } for (int i = 0; i < (vmType.PhysicalCount + vmType.VirtualCount); i++) { remote.IsParametersDirty(); sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/gain", remote.GetParameterFloat("Bus[" + i.ToString() + "].Gain"))); sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/mute", remote.GetParameterFloat("Bus[" + i.ToString() + "].Mute"))); sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/level", 1, remote.GetLevel(VoicemeeterLevelType.OUTPUT, (VoicemeeterChannels)(i * vmType.PhysicalOutputChannelCount)))); sender.Send(new SharpOSC.OscMessage("/vm/bus/" + i.ToString() + "/level", 2, remote.GetLevel(VoicemeeterLevelType.OUTPUT, (VoicemeeterChannels)(i * vmType.PhysicalOutputChannelCount + 1)))); remote.IsParametersDirty(); sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/gain", remote.GetParameterFloat("Strip[" + i.ToString() + "].Gain"))); sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/mute", remote.GetParameterFloat("Strip[" + i.ToString() + "].Mute"))); sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/label", stringOR(remote.GetParameterStringUNICODE("Strip[" + i.ToString() + "].Label"), "A" + (i + 1).ToString()))); sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/level", 1, remote.GetLevel(VoicemeeterLevelType.INPUT_POST_MUTE, (VoicemeeterChannels)(i < vmType.PhysicalCount ? (i * vmType.PhysicalInputChannelCount + 0) : (vmType.PhysicalCount * 2 + (i - vmType.PhysicalCount) * vmType.VirtualChannelCount + 0))))); sender.Send(new SharpOSC.OscMessage("/vm/strip/" + i.ToString() + "/level", 2, remote.GetLevel(VoicemeeterLevelType.INPUT_POST_MUTE, (VoicemeeterChannels)(i < vmType.PhysicalCount ? (i * vmType.PhysicalInputChannelCount + 1) : (vmType.PhysicalCount * 2 + (i - vmType.PhysicalCount) * vmType.VirtualChannelCount + 1))))); } System.Threading.Thread.Sleep(10); } }
private void Replayer_Button_Play_Click(object sender, RoutedEventArgs e) { if (_replayer == null) { MessageBox.Show("Please select file firstly!"); return; } // not playing // paused or stoped if (!_replayer.IsPlaying) { // Check map Replayer_Map_Item buff = null; Dictionary <IPEndPoint, IPEndPoint> map = new Dictionary <IPEndPoint, IPEndPoint>(); try { foreach (Replayer_Map_Item item in Replayer_Map.Items) { buff = item; // ignore if (!(bool)item.Valid.IsChecked) { continue; } var point = item.Point.Get_IPEND(); map.Add(item._point, point); } } catch (Exception) { MessageBox.Show("Wrong Input!\nCheck the Map List At " + buff?.Num.Text); Recorder_Stop(); return; } _replayer.Initial(map, (Core.ReplayCore.SendInfo msg) => { _sender.Send(msg.bytes.ToArray(), msg.point); }, (Core.ReplayCore.ReplayInfo info) => { this.Dispatcher.Invoke(() => { var finfo = _replayer.FileInfo; if (info.index == finfo.totalIndex - 1) { if ((bool)Replayer_Flag_Loop.IsChecked) { _replayer.JumpTo(0); } } if (!Replayer_Flag_IsDraging) { Replayer_Slider.Value = info.index; } Replayer_Info.Text = info.time.AddHours(8) + " Progress Percentage: " + (100.0 * (double)info.index / ((double)finfo.totalIndex - 1)).ToString("f2") + "%" + "\nProgress Index: " + info.index + " Total Index: " + finfo.totalIndex + " Cost Time:" + info.pkgCostTime; }); }); _replayer.P(); Replayer_IsPlaying(); // save params Save_Replay_Params(); } else { _replayer.P(); Replayer_NotPlaying(); } }
private void CaptureProcess() { Sender = new UDPSender(CurrentIpAdress, Convert.ToInt32(currentPort)); while (senseManager.AcquireFrame(true).IsSuccessful()) { PXCMCapture.Sample sample = senseManager.QuerySample(); PXCMImage.ImageData colorImageData; Bitmap colorBitmap; sample.color.AcquireAccess(PXCMImage.Access.ACCESS_READ, PXCMImage.PixelFormat.PIXEL_FORMAT_RGB32, out colorImageData); colorBitmap = colorImageData.ToBitmap(0, sample.color.info.width, sample.color.info.height); if (faceModule != null) { PXCMFaceData faceData = faceModule.CreateOutput(); faceData.Update(); numberTrackedFace = faceData.QueryNumberOfDetectedFaces(); PXCMFaceData.Face faceDataFace = faceData.QueryFaceByIndex(0); if (faceDataFace != null) { PXCMFaceData.DetectionData faceDetectionData = faceDataFace.QueryDetection(); PXCMFaceData.LandmarksData landMarksData = faceDataFace.QueryLandmarks(); if (faceDetectionData != null) //Запись переменных нахождения фейса { PXCMRectI32 faceRectangle; faceDetectionData.QueryFaceAverageDepth(out faceAverageDepth); faceDetectionData.QueryBoundingRect(out faceRectangle); faceRectangleHeight = faceRectangle.h; faceRectangleWidth = faceRectangle.w; faceRectangleX = faceRectangle.x; faceRectangleY = faceRectangle.y; PXCMFaceData.LandmarkPoint[] points; //Херачим точки на фейс if (landMarksData != null) { bool res = landMarksData.QueryPoints(out points); Graphics graphics = Graphics.FromImage(colorBitmap); Font font = new Font(System.Drawing.FontFamily.GenericMonospace, 12, System.Drawing.FontStyle.Bold); foreach (PXCMFaceData.LandmarkPoint landmark in points) { point.X = landmark.image.x + LandMarkAlingment; point.Y = landmark.image.y + LandMarkAlingment; //Console.WriteLine(point.X); if (landmark.confidenceImage == 0) { graphics.DrawString("X", font, System.Drawing.Brushes.Brown, point); } else { graphics.DrawString("*", font, System.Drawing.Brushes.CornflowerBlue, point); } Connect = Math.Min(landmark.confidenceImage, 1); } } } var connectMessage = new SharpOSC.OscMessage("/expressions/connectMessage", Connect); Sender.Send(connectMessage); PXCMFaceData.PoseData facePoseData = faceDataFace.QueryPose(); //переменные поворота для анимации головы if (facePoseData != null) { PXCMFaceData.PoseEulerAngles headAngles; facePoseData.QueryPoseAngles(out headAngles); headRoll = headAngles.roll; headYaw = headAngles.yaw; headPitch = headAngles.pitch; } PXCMFaceData.ExpressionsData expressionData = faceDataFace.QueryExpressions(); if (expressionData != null) { PXCMFaceData.ExpressionsData.FaceExpressionResult score; expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_KISS, out score); Dispatcher.Invoke(() => kissExpression.Text = Convert.ToString(score.intensity)); var kissMessage = new SharpOSC.OscMessage("/expressions/kiss", score.intensity); Sender.Send(kissMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_MOUTH_OPEN, out score); Dispatcher.Invoke(() => mouthExpression.Text = Convert.ToString(score.intensity)); var mouthMessage = new SharpOSC.OscMessage("/expressions/mouth", score.intensity); Sender.Send(mouthMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_SMILE, out score); Dispatcher.Invoke(() => smileExpression.Text = Convert.ToString(score.intensity)); var smileMessage = new SharpOSC.OscMessage("/expressions/smile", score.intensity); Sender.Send(smileMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_TONGUE_OUT, out score); Dispatcher.Invoke(() => tongueExpression.Text = Convert.ToString(score.intensity)); var tongueOutMessage = new SharpOSC.OscMessage("/expressions/tongueout", score.intensity); Sender.Send(tongueOutMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_LOWERER_LEFT, out score); Dispatcher.Invoke(() => leftBrowLowExpression.Text = Convert.ToString(score.intensity)); var leftBrowLowMessage = new SharpOSC.OscMessage("/expressions/leftBrowLow", score.intensity); Sender.Send(leftBrowLowMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_LOWERER_RIGHT, out score); Dispatcher.Invoke(() => rightBrowLowExpression.Text = Convert.ToString(score.intensity)); var rightBrowLowMessage = new SharpOSC.OscMessage("/expressions/rightBrowLow", score.intensity); Sender.Send(rightBrowLowMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_RAISER_LEFT, out score); Dispatcher.Invoke(() => leftBrowRaiseExpression.Text = Convert.ToString(score.intensity)); var leftBrowRaiseMessage = new SharpOSC.OscMessage("/expressions/leftBrowRaise", score.intensity); Sender.Send(leftBrowRaiseMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_BROW_RAISER_RIGHT, out score); Dispatcher.Invoke(() => rightBrowRaiseExpression.Text = Convert.ToString(score.intensity)); var rightBrowRaiseMessage = new SharpOSC.OscMessage("/expressions/rightBrowRaise", score.intensity); Sender.Send(rightBrowRaiseMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_CLOSED_LEFT, out score); Dispatcher.Invoke(() => leftEyeClosedExpression.Text = Convert.ToString(score.intensity)); var leftEyeClosedMessage = new SharpOSC.OscMessage("/expressions/leftEyeClosed", score.intensity); Sender.Send(leftEyeClosedMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_CLOSED_RIGHT, out score); Dispatcher.Invoke(() => rightEyeClosedExpression.Text = Convert.ToString(score.intensity)); var rightEyeClosedMessage = new SharpOSC.OscMessage("/expressions/rightEyeClosed", score.intensity); Sender.Send(rightEyeClosedMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_TURN_LEFT, out score); Dispatcher.Invoke(() => eyesTurnLeftExpression.Text = Convert.ToString(score.intensity)); var eyesTurnLeftMessage = new SharpOSC.OscMessage("/expressions/eyesTurnLeft", score.intensity); Sender.Send(eyesTurnLeftMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_TURN_RIGHT, out score); Dispatcher.Invoke(() => eyesTurnRightExpression.Text = Convert.ToString(score.intensity)); var eyesTurnRightMessage = new SharpOSC.OscMessage("/expressions/eyesTurnRight", score.intensity); Sender.Send(eyesTurnRightMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_DOWN, out score); Dispatcher.Invoke(() => eyesDownExpression.Text = Convert.ToString(score.intensity)); var eyesDownMessage = new SharpOSC.OscMessage("/expressions/eyesDown", score.intensity); Sender.Send(eyesDownMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_EYES_UP, out score); Dispatcher.Invoke(() => eyesUpExpression.Text = Convert.ToString(score.intensity)); var eyesUpMessage = new SharpOSC.OscMessage("/expressions/eyesUp", score.intensity); Sender.Send(eyesUpMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_PUFF_LEFT, out score); Dispatcher.Invoke(() => puffLeftExpression.Text = Convert.ToString(score.intensity)); var leftPuffMessage = new SharpOSC.OscMessage("/expressions/leftPuff", score.intensity); Sender.Send(leftPuffMessage); expressionData.QueryExpression(PXCMFaceData.ExpressionsData.FaceExpression.EXPRESSION_PUFF_RIGHT, out score); Dispatcher.Invoke(() => puffRightExpression.Text = Convert.ToString(score.intensity)); var rightPuffMessage = new SharpOSC.OscMessage("/expressions/rightPuff", score.intensity); Sender.Send(rightPuffMessage); } } faceData.Dispose(); } UpdateUI(colorBitmap); colorBitmap.Dispose(); sample.color.ReleaseAccess(colorImageData); senseManager.ReleaseFrame(); } }
/// <summary> /// Handles the body frame data arriving from the sensor /// </summary> /// <param name="sender">object sending the event</param> /// <param name="e">event arguments</param> private void Reader_FrameArrived(object sender, BodyFrameArrivedEventArgs e) { bool dataReceived = false; using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame()) { if (bodyFrame != null) { if (this.bodies == null) { this.bodies = new Body[bodyFrame.BodyCount]; } // The first time GetAndRefreshBodyData is called, Kinect will allocate each Body in the array. // As long as those body objects are not disposed and not set to null in the array, // those body objects will be re-used. bodyFrame.GetAndRefreshBodyData(this.bodies); dataReceived = true; } } if (dataReceived) { using (DrawingContext dc = this.drawingGroup.Open()) { // Draw a transparent background to set the render size dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, this.displayWidth, this.displayHeight)); int penIndex = 0; foreach (Body body in this.bodies) { Pen drawPen = this.bodyColors[penIndex++]; if (body.IsTracked) { this.DrawClippedEdges(body, dc); IReadOnlyDictionary <JointType, Joint> joints = body.Joints; // log joints StringBuilder builder = new StringBuilder(); // it's ugly and verbose, but it's clear and in guaranteed order builder.Append(joints[JointType.AnkleLeft].Position.X + " " + joints[JointType.AnkleLeft].Position.Y + " " + joints[JointType.AnkleLeft].Position.Z + " "); builder.Append(joints[JointType.AnkleRight].Position.X + " " + joints[JointType.AnkleRight].Position.Y + " " + joints[JointType.AnkleRight].Position.Z + " "); builder.Append(joints[JointType.ElbowLeft].Position.X + " " + joints[JointType.ElbowLeft].Position.Y + " " + joints[JointType.ElbowLeft].Position.Z + " "); builder.Append(joints[JointType.ElbowRight].Position.X + " " + joints[JointType.ElbowRight].Position.Y + " " + joints[JointType.ElbowRight].Position.Z + " "); builder.Append(joints[JointType.FootLeft].Position.X + " " + joints[JointType.FootLeft].Position.Y + " " + joints[JointType.FootLeft].Position.Z + " "); builder.Append(joints[JointType.FootRight].Position.X + " " + joints[JointType.FootRight].Position.Y + " " + joints[JointType.FootRight].Position.Z + " "); builder.Append(joints[JointType.HandLeft].Position.X + " " + joints[JointType.HandLeft].Position.Y + " " + joints[JointType.HandLeft].Position.Z + " "); builder.Append(joints[JointType.HandRight].Position.X + " " + joints[JointType.HandRight].Position.Y + " " + joints[JointType.HandRight].Position.Z + " "); builder.Append(joints[JointType.HandTipLeft].Position.X + " " + joints[JointType.HandTipLeft].Position.Y + " " + joints[JointType.HandTipLeft].Position.Z + " "); builder.Append(joints[JointType.HandTipRight].Position.X + " " + joints[JointType.HandTipRight].Position.Y + " " + joints[JointType.HandTipRight].Position.Z + " "); builder.Append(joints[JointType.Head].Position.X + " " + joints[JointType.Head].Position.Y + " " + joints[JointType.Head].Position.Z + " "); builder.Append(joints[JointType.HipLeft].Position.X + " " + joints[JointType.HipLeft].Position.Y + " " + joints[JointType.HipLeft].Position.Z + " "); builder.Append(joints[JointType.HipRight].Position.X + " " + joints[JointType.HipRight].Position.Y + " " + joints[JointType.HipRight].Position.Z + " "); builder.Append(joints[JointType.KneeLeft].Position.X + " " + joints[JointType.KneeLeft].Position.Y + " " + joints[JointType.KneeLeft].Position.Z + " "); builder.Append(joints[JointType.KneeRight].Position.X + " " + joints[JointType.KneeRight].Position.Y + " " + joints[JointType.KneeRight].Position.Z + " "); builder.Append(joints[JointType.Neck].Position.X + " " + joints[JointType.Neck].Position.Y + " " + joints[JointType.Neck].Position.Z + " "); builder.Append(joints[JointType.ShoulderLeft].Position.X + " " + joints[JointType.ShoulderLeft].Position.Y + " " + joints[JointType.ShoulderLeft].Position.Z + " "); builder.Append(joints[JointType.ShoulderRight].Position.X + " " + joints[JointType.ShoulderRight].Position.Y + " " + joints[JointType.ShoulderRight].Position.Z + " "); builder.Append(joints[JointType.SpineBase].Position.X + " " + joints[JointType.SpineBase].Position.Y + " " + joints[JointType.SpineBase].Position.Z + " "); builder.Append(joints[JointType.SpineMid].Position.X + " " + joints[JointType.SpineMid].Position.Y + " " + joints[JointType.SpineMid].Position.Z + " "); builder.Append(joints[JointType.SpineShoulder].Position.X + " " + joints[JointType.SpineShoulder].Position.Y + " " + joints[JointType.SpineShoulder].Position.Z + " "); builder.Append(joints[JointType.ThumbLeft].Position.X + " " + joints[JointType.ThumbLeft].Position.Y + " " + joints[JointType.ThumbLeft].Position.Z + " "); builder.Append(joints[JointType.ThumbRight].Position.X + " " + joints[JointType.ThumbRight].Position.Y + " " + joints[JointType.ThumbRight].Position.Z + " "); builder.Append(joints[JointType.WristLeft].Position.X + " " + joints[JointType.WristLeft].Position.Y + " " + joints[JointType.WristLeft].Position.Z + " "); builder.Append(joints[JointType.WristRight].Position.X + " " + joints[JointType.WristRight].Position.Y + " " + joints[JointType.WristRight].Position.Z + " "); string jointStr = builder.ToString(); log.Info(jointStr); // convert the joint points to depth (display) space Dictionary <JointType, Point> jointPoints = new Dictionary <JointType, Point>(); foreach (JointType jointType in joints.Keys) { // sometimes the depth(Z) of an inferred joint may show as negative // clamp down to 0.1f to prevent coordinatemapper from returning (-Infinity, -Infinity) CameraSpacePoint position = joints[jointType].Position; if (position.Z < 0) { position.Z = InferredZPositionClamp; } DepthSpacePoint depthSpacePoint = this.coordinateMapper.MapCameraPointToDepthSpace(position); jointPoints[jointType] = new Point(depthSpacePoint.X, depthSpacePoint.Y); } this.DrawBody(joints, jointPoints, dc, drawPen); this.DrawHand(body.HandLeftState, jointPoints[JointType.HandLeft], dc); this.DrawHand(body.HandRightState, jointPoints[JointType.HandRight], dc); //by KO // setting data set : the name of the element + x + y + z //FOR MUSIC var HandRight = new SharpOSC.OscMessage(" /HandRight", " ", joints[JointType.HandRight].Position.X.ToString(), " ", joints[JointType.HandRight].Position.Y.ToString(), " ", joints[JointType.HandRight].Position.Z.ToString()); var HandTipLeft = new SharpOSC.OscMessage(" /HandTipLeft", " ", joints[JointType.HandTipLeft].Position.X.ToString(), " ", joints[JointType.HandTipLeft].Position.Y.ToString(), " ", joints[JointType.HandTipLeft].Position.Z.ToString()); var AnkleLeft = new SharpOSC.OscMessage(" /AnkleLeft", " ", joints[JointType.AnkleLeft].Position.X.ToString(), " ", joints[JointType.AnkleLeft].Position.Y.ToString(), " ", joints[JointType.AnkleLeft].Position.Z.ToString()); var AnkleRight = new SharpOSC.OscMessage(" /AnkleRight", " ", joints[JointType.AnkleRight].Position.X.ToString(), " ", joints[JointType.AnkleRight].Position.Y.ToString(), " ", joints[JointType.AnkleRight].Position.Z.ToString()); //PureData //var HandRight = new SharpOSC.OscMessage("/HandRight/position", joints[JointType.HandRight].Position.X, joints[JointType.HandRight].Position.Y, joints[JointType.HandRight].Position.Z); //var HandTipLeft = new SharpOSC.OscMessage("/HandTipLeft/position", joints[JointType.HandTipLeft].Position.X, joints[JointType.HandTipLeft].Position.Y, joints[JointType.HandTipLeft].Position.Z); //var AnkleLeft = new SharpOSC.OscMessage("/AnkleLeft", " ", joints[JointType.AnkleLeft].Position.X.ToString(), " ", joints[JointType.AnkleLeft].Position.Y.ToString(), " ", joints[JointType.AnkleLeft].Position.Z.ToString()); //var AnkleRight = new SharpOSC.OscMessage("/AnkleRight", " ", joints[JointType.AnkleRight].Position.X.ToString(), " ", joints[JointType.AnkleRight].Position.Y.ToString(), " ", joints[JointType.AnkleRight].Position.Z.ToString()); var ElbowLeft = new SharpOSC.OscMessage(" /ElbowLeft", " ", joints[JointType.ElbowLeft].Position.X.ToString(), " ", joints[JointType.ElbowLeft].Position.Y.ToString(), " ", joints[JointType.ElbowLeft].Position.Z.ToString()); var ElbowRight = new SharpOSC.OscMessage(" /ElbowRight", " ", joints[JointType.ElbowRight].Position.X.ToString(), " ", joints[JointType.ElbowRight].Position.Y.ToString(), " ", joints[JointType.ElbowRight].Position.Z.ToString()); var FootLeft = new SharpOSC.OscMessage(" /FootLeft", joints[JointType.FootLeft].Position.X.ToString(), joints[JointType.FootLeft].Position.Y.ToString(), joints[JointType.FootLeft].Position.Z.ToString()); var FootRight = new SharpOSC.OscMessage(" /FootRight", joints[JointType.FootRight].Position.X.ToString(), joints[JointType.FootRight].Position.Y.ToString(), joints[JointType.FootRight].Position.Z.ToString()); var HandLeft = new SharpOSC.OscMessage(" /HandLeft", " ", joints[JointType.HandLeft].Position.X.ToString(), " ", joints[JointType.HandLeft].Position.Y.ToString(), " ", joints[JointType.HandLeft].Position.Z.ToString()); var HandTipRight = new SharpOSC.OscMessage(" /HandTipRight", joints[JointType.HandTipRight].Position.X.ToString(), joints[JointType.HandTipRight].Position.Y.ToString(), joints[JointType.AnkleLeft].Position.Z.ToString()); var Head = new SharpOSC.OscMessage(" /Head", joints[JointType.Head].Position.X.ToString(), joints[JointType.Head].Position.Y.ToString(), joints[JointType.Head].Position.Z.ToString()); var HipLeft = new SharpOSC.OscMessage(" /HipLeft", joints[JointType.HipLeft].Position.X.ToString(), joints[JointType.HipLeft].Position.Y.ToString(), joints[JointType.HipLeft].Position.Z.ToString()); var HipRight = new SharpOSC.OscMessage(" /HipRight", joints[JointType.HipRight].Position.X.ToString(), joints[JointType.HipRight].Position.Y.ToString(), joints[JointType.HipRight].Position.Z.ToString()); var KneeLeft = new SharpOSC.OscMessage(" /KneeLeft", joints[JointType.KneeLeft].Position.X.ToString(), joints[JointType.KneeLeft].Position.Y.ToString(), joints[JointType.KneeLeft].Position.Z.ToString()); var KneeRight = new SharpOSC.OscMessage(" /KneeRight", joints[JointType.KneeRight].Position.X.ToString(), joints[JointType.KneeRight].Position.Y.ToString(), joints[JointType.KneeRight].Position.Z.ToString()); var Neck = new SharpOSC.OscMessage(" /Neck", joints[JointType.Neck].Position.X.ToString(), joints[JointType.Neck].Position.Y.ToString(), joints[JointType.Neck].Position.Z.ToString()); var ShoulderLeft = new SharpOSC.OscMessage(" /ShoulderLeft", joints[JointType.ShoulderLeft].Position.X.ToString(), joints[JointType.ShoulderLeft].Position.Y.ToString(), joints[JointType.ShoulderLeft].Position.Z.ToString()); var ShoulderRight = new SharpOSC.OscMessage(" /ShoulderRight", joints[JointType.ShoulderRight].Position.X.ToString(), joints[JointType.ShoulderRight].Position.Y.ToString(), joints[JointType.ShoulderRight].Position.Z.ToString()); var SpineBase = new SharpOSC.OscMessage(" /SpineBase", joints[JointType.SpineBase].Position.X.ToString(), joints[JointType.SpineBase].Position.Y.ToString(), joints[JointType.SpineBase].Position.Z.ToString()); var SpineMid = new SharpOSC.OscMessage(" /SpineMid", joints[JointType.SpineMid].Position.X.ToString(), joints[JointType.SpineMid].Position.Y.ToString(), joints[JointType.SpineMid].Position.Z.ToString()); var SpineShoulder = new SharpOSC.OscMessage(" /SpineShoulder", joints[JointType.SpineShoulder].Position.X.ToString(), joints[JointType.SpineShoulder].Position.Y.ToString(), joints[JointType.SpineShoulder].Position.Z.ToString()); var ThumbLeft = new SharpOSC.OscMessage(" /ThumbLeft", joints[JointType.ThumbLeft].Position.X.ToString(), joints[JointType.ThumbLeft].Position.Y.ToString(), joints[JointType.ThumbLeft].Position.Z.ToString()); var ThumbRight = new SharpOSC.OscMessage(" /ThumbRight", joints[JointType.ThumbRight].Position.X.ToString(), joints[JointType.ThumbRight].Position.Y.ToString(), joints[JointType.ThumbRight].Position.Z.ToString()); var WristLeft = new SharpOSC.OscMessage(" /WristLeft", joints[JointType.WristLeft].Position.X.ToString(), joints[JointType.WristLeft].Position.Y.ToString(), joints[JointType.WristLeft].Position.Z.ToString()); var WristRight = new SharpOSC.OscMessage(" /WristRight", joints[JointType.WristRight].Position.X.ToString(), joints[JointType.WristRight].Position.Y.ToString(), joints[JointType.WristRight].Position.Z.ToString()); // OSC message for area // var Area = new SharpOSC.OscMessage("/area", testV.ToString()); // Sending UDP OscBundle oscBundle = new OscBundle(0, HandRight, HandLeft, AnkleRight, AnkleLeft);//FOR MUSIC //OscBundle oscBundle = new OscBundle(0, HandRight);//FOR PureData //OscBundle oscBundle = new OscBundle(0, HandLeft, HandRight, HandTipLeft, HandTipRight); /*FootLeft, FootRight, HandLeft, HandRight, HandTipLeft, * HandTipRight, Head, HipLeft, HipRight, KneeLeft, KneeRight, Neck, ShoulderLeft, ShoulderRight, SpineBase, * SpineMid, SpineShoulder, ThumbLeft, ThumbRight, WristLeft, WristRight); */ Console.WriteLine("TEST SENDING:"); Console.WriteLine(oscBundle.ToString()); //Send Method (message) udpSender.Send(oscBundle); } } // prevent drawing outside of our render area this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, this.displayWidth, this.displayHeight)); } } }
// sends a state request to the ip address public void SendRequestMatch(string serverIPAddress) { MessageMatchRequest m = new MessageMatchRequest (); m.Guid = MyProfile.Guid; UDPSender<MessageMatchRequest> sender = new UDPSender<MessageMatchRequest> (); sender.Send (UDP_MESSAGE_REQUEST_MATCH, m, serverIPAddress, UPD_PORT_LISTENER); if (Logging) { Database.Instance().SaveLog("Match - SendRequestMatch() " + serverIPAddress); } }
static void LoadPara(string[] args) { if (args.Length % 2 != 0) { Logger.Error.WriteLine("Para Input Error!"); return; } Dictionary <string, string> para = new Dictionary <string, string>(); for (int i = 0; i < args.Length; i += 2) { para.Add(args[i], args[i + 1]); } // 不指定参数则尝试加载默认配置 if (para.Count == 0) { para.Add("-t", "para.txt"); } // 从配置文件中加载参数 if (para.ContainsKey("-t")) { if (File.Exists(para["-t"])) { var str = File.ReadAllText(para["-t"]); List <string> buff = new List <string>(); args = File.ReadAllText(para["-t"]).Split(" "); for (int i = 0; i < args.Length; i++) { // "\"" 内可能有" " // 需要将其合并 if (args[i].Contains("\"")) { for (int j = i + 1; j < args.Length; j++) { args[i] += " " + args[j]; if (args[j].Contains("\"")) { buff.Add(args[i].Trim('\"')); i = j; break; } } } else { buff.Add(args[i]); } } args = buff.ToArray(); for (int i = 0; i < args.Length; i += 2) { para.Add(args[i], args[i + 1]); } } else { Logger.Error.WriteLine("No Such ParaFile!"); return; } } string[] paths = null; // 加载单一文件 if (para.ContainsKey("-f")) { if (File.Exists(para["-f"]) && para["-f"].EndsWith(".lcl")) { paths = new string[] { para["-f"] }; } else { Logger.Error.WriteLine("No Such File!"); return; } } // 加载文件夹 else if (para.ContainsKey("-p")) { if (Directory.Exists(para["-p"])) { paths = Directory.GetFiles(para["-p"], "*.lcl"); } else { Logger.Error.WriteLine("No Such Path!"); return; } } else { Logger.Error.WriteLine("No File Path!"); return; } // 加载映射关系 var map = new Dictionary <IPEndPoint, IPEndPoint>(); if (para.ContainsKey("-m")) { var ppp = para["-m"].Split(" "); foreach (var it in ppp) { var pp = it.Split("=>"); ParseInputIpPort(pp[0], out string ipO, out ushort portO); ParseInputIpPort(pp[1], out string ipM, out ushort portM); map.Add(new IPEndPoint(IPAddress.Parse(ipO), portO), new IPEndPoint(IPAddress.Parse(ipM), portM)); } } else { Logger.Error.WriteLine("No Map Para!"); } UDPSender sender = new UDPSender(); core = new Core.ReplayCore(paths); // 获取文件 info _fInfo = core.FileInfo; //Core.ReplayCore.DeleSendHandler sendHandler = (ReadOnlySpan<byte> bytes, IPEndPoint point) => //{ // sender.Send(bytes.ToArray(), point); //}; Core.ReplayCore.DeleSendHandler sendHandler = (Core.ReplayCore.SendInfo msg) => { sender.Send(msg.bytes.ToArray(), msg.point); }; Core.ReplayCore.DeleInfoHandler infoHandler = (Core.ReplayCore.ReplayInfo info) => { Console.WriteLine(info.time + ": " + (100.0 * (double)info.index / ((double)_fInfo.totalIndex - 1)).ToString("f2") + "%" + " " + info.index + " " + info.pkgCostTime); }; // 设置回放的 point map // 设置回放的 sendHandler 需要注意此处的委托只能做发送 需要尽可能快的返回 // 设置回放的 infoHandler 此处是异步触发 core.Initial(map, sendHandler, infoHandler); Logger.Info.WriteLine("TotalIndex: " + _fInfo.totalIndex + " StartTime: " + _fInfo.time + " TotalTime: " + _fInfo.totalIndex * _fInfo.timeInterval + "s"); Logger.Info.WriteLine("Notes: " + _fInfo.notes); Logger.Info.WriteLine("Maps: "); foreach (var point in _fInfo.points) { if (map.ContainsKey(point)) { Logger.Info.WriteLine(point + " => " + map[point]); } else { Logger.Info.WriteLine(point + " => "); } } }
// Profile Messges ////////// // sends a request to ip address to return send us their profile picture public bool SendRequestUserProfile(string serverIPAddress, bool includepic) { MessageProfileRequest m = new MessageProfileRequest (); m.IncludePic = includepic; UDPSender<MessageProfileRequest> sender = new UDPSender<MessageProfileRequest> (); sender.Send (UDP_REQUEST_PROFILE_MESSAGE, m, serverIPAddress, UPD_PORT_LISTENER); if (Logging) { Database.Instance().SaveLog("Profile - SendRequestUserProfile() " + serverIPAddress); } return true; }
// Match // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // sends a state (LIKE, NOPE, BLOCK) to the ip address public void SendMatch(MessageMatch.eMatch match, string serverIPAddress) { MessageMatch m = new MessageMatch (); m.Guid = MyProfile.Guid; m.value = match; UDPSender<MessageMatch> sender = new UDPSender<MessageMatch> (); sender.Send (UDP_MATCH_MESSAGE, m, serverIPAddress, UPD_PORT_LISTENER); if (Logging) { Database.Instance().SaveLog("Match - SendMatch() " + serverIPAddress); } }
static void sendEyeCoordsOverOSC(UDPSender sender, OscMessage message) { Console.WriteLine("Sent point (" + message.Arguments[0] + ", " + message.Arguments[1] + ")"); sender.Send(message); return; }