示例#1
0
        /// <summary>
        /// Processes the message.
        /// </summary>
        /// <param name="msg">The message from the haytham server.</param>
        private void ProcessMessage(string msg)
        {
            if (msg == "Commands|CalibrationFinished|")
            {
                this.OnCalibrationFinished(EventArgs.Empty);
                return;
            }

            string[] msgArray = this.ConvertMsgToArray(msg);

            if (msg.StartsWith("Eye|"))
            {
                var newData = new GazeData();

                // Get time
                var timeInTicks = long.Parse(msgArray[0]);

                // Convert to milliseconds
                newData.Time = (long)(timeInTicks / 10000.0);

                // Get Position in screen coordinates
                var absoluteX = float.Parse(msgArray[1]);
                var absoluteY = float.Parse(msgArray[2]);

                // Convert to relative coordinates, cause this is expected by Ogama
                newData.GazePosX = absoluteX / this.presentationScreenSize.Width;
                newData.GazePosY = absoluteY / this.presentationScreenSize.Height;

                newData.PupilDiaX = int.Parse(msgArray[3]);

                this.OnGazeDataReceived(new GazeDataChangedEventArgs(newData));

                var newTrackStatusData = new TrackStatusData();
                newTrackStatusData.TrackedEyes = Eye.Left;
                var isPupilFound = bool.Parse(msgArray[4]);
                newTrackStatusData.LeftEyeValidity = isPupilFound ? Validity.Good : Validity.Missing;
                var pupilPosX = float.Parse(msgArray[5]);
                var pupilPosY = float.Parse(msgArray[6]);
                newTrackStatusData.LeftEyePosition = new Vector3D(pupilPosX, pupilPosY, 0);
                this.OnTrackStatusDataChanged(new TrackStatusDataChangedEventArgs(newTrackStatusData));
            }
        }
 /// <summary>
 /// Initializes a new instance of the TrackStatusDataChangedEventArgs class.
 /// </summary>
 /// <param name="newTrackStatusData">
 /// The track status data as a <see cref="TrackStatusData"/> value.
 /// </param>
 public TrackStatusDataChangedEventArgs(TrackStatusData newTrackStatusData)
 {
     this.TrackStatusData = newTrackStatusData;
 }