Пример #1
0
        void ReadFrameHandler(mdwebcam.Frame frame)
        {
            Bitmap old = _state.Image;

            if (frame.Image != null)
            {
                _state.Image     = new Bitmap(frame.Image);
                _state.ImageSize = new Vector2(_state.Image.Size.Width, _state.Image.Size.Height);
                frame.Image.Dispose();
            }
            else
            {
                _state.Image = null;
            }
            _state.LastFrameUpdate = DateTime.UtcNow;


            if (old != null)
            {
                old.Dispose();
            }

            webcam.UpdateFrameRequest request = new webcam.UpdateFrameRequest();
            request.TimeStamp = _state.LastFrameUpdate;

            webcam.UpdateFrame update = new webcam.UpdateFrame();
            update.Body         = request;
            update.ResponsePort = null;
            _fwdPort.Post(update);
        }
Пример #2
0
        public void UpdateFrameHandler(webcam.UpdateFrame update)
        {
            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);

#if !URT_MINCLR
            SendNotification(_submgrPort, update);
#else
            SendNotification(update);
#endif
        }
Пример #3
0
        void FrameHandler(Frame frame)
        {
            Frame previous = new Frame();

            previous.Image     = _state.Image;
            previous.TimeStamp = _state.LastFrameUpdate;

            _state.Image     = frame.Image;
            _state.ImageSize = new Microsoft.Robotics.PhysicalModel.Vector2(
                _state.Image.Width,
                _state.Image.Height
                );

            if (_state.Selected != null)
            {
                if (_state.Selected.Format == null ||
                    _state.Selected.Format.Width != _state.Image.Width ||
                    _state.Selected.Format.Height != _state.Image.Height)
                {
                    _state.Selected.Format = new Format(
                        _state.Image.Width,
                        _state.Image.Height,
                        0,
                        0,
                        0
                        );
                }
            }

            if (_captureEpoch == DateTime.MinValue)
            {
                _captureEpoch = DateTime.UtcNow - frame.Offset;
            }

            _state.LastFrameUpdate = _captureEpoch + frame.Offset;


            if (previous.Image != null)
            {
#if !URT_MINCLR
                if (_streamPort != null)
                {
                    _streamPort.Post(previous);
                }
                else
#endif
                {
                    previous.Image.Dispose();
                }
            }

            webcam.UpdateFrame update = new webcam.UpdateFrame(new webcam.UpdateFrameRequest(frame.TimeStamp), null);
            _altFwdPort.Post(update);
        }
        public IEnumerator <ITask> UpdateFrameHandler(webcam.UpdateFrame update)
        {
            if (_entity != null)
            {
                PortSet <int[], Exception> result = new PortSet <int[], Exception>();
                _entity.CaptureScene(result);

                yield return(Arbiter.Choice(result,
                                            delegate(int [] data)
                {
                    var b = _entity.CreateBitmapFromArray(data);
                    _state.LastFrameUpdate = DateTime.Now;
                    _state.Image = b;
                    update.ResponsePort.Post(DefaultUpdateResponseType.Instance);
                    base.SendNotification <webcam.UpdateFrame>(_subMgrPort, update);

                    this.DoWebCamSensorReplace(data);
                },
                                            delegate(Exception ex)
                {
                    update.ResponsePort.Post(Fault.FromException(ex));
                }));
            }
        }
Пример #5
0
 public void UpdateFrameHandler(webcam.UpdateFrame update)
 {
     update.ResponsePort.Post(DefaultUpdateResponseType.Instance);
     SendNotification(_subMgrPort, update);
 }