示例#1
0
        /// <summary>
        /// Initialize the pantilt ops
        /// </summary>
        /// <returns>An iterator</returns>
        private IEnumerator <ITask> ConnectPanTiltHandler()
        {
            Fault fault = null;

            if (this.panTiltOps != null)
            {
                // Try to subscribe
                yield return(this.panTiltOps
                             .Subscribe(this.panTiltNotify, typeof(pantilt.Rotate))
                             .Choice(EmptyHandler, f => fault = f));

                if (fault != null)
                {
                    // There is no Kinect partner
                    LogError(null, "Failed to subscribe to Pan/Tilt", fault);
                    yield break;
                }

                // Set the initial tilt angle now
                var request = new OnChangeTilt(this.dashboardForm, this.state.TiltAngle);
                SpawnIterator(request, this.OnChangeTiltHandler);
            }

            yield break;
        }
示例#2
0
        /// <summary>
        /// Handle Tilt Angle requests
        /// </summary>
        /// <param name="tilt">The Tilt request</param>
        /// <returns>An iterator</returns>
        private IEnumerator <ITask> OnChangeTiltHandler(OnChangeTilt tilt)
        {
            Fault fault = null;
            var   req   = new pantilt.RotateMessage
            {
                RotatePanRequest  = null,
                RotateTiltRequest = new SingleAxisJoint.Proxy.RotateSingleAxisRequest
                {
                    TargetRotationAngleInRadians = (float)(tilt.Tilt * Math.PI / 180.0),
                    IsRelative = false
                }
            };

            yield return(this.panTiltOps.Rotate(req).Choice(EmptyHandler, f => fault = f));

            if (fault != null)
            {
                LogError("Update Tilt failed: ", fault.ToException());
            }
        }