/// <summary>
        /// PTZ云台控制
        /// </summary>
        /// <param name="deviceId">设备ID</param>
        /// <param name="ucommand">控制命令</param>
        /// <param name="dwStop">开始或结束</param>
        /// <param name="dwSpeed">速度</param>
        public void PtzContrl(string deviceId, int ucommand, int dwStop, int dwSpeed)
        {
            if (LocalEndPoint == null)
            {
                OnSIPServiceChange(deviceId, SipServiceStatus.Wait);
                return;
            }
            string     fromTag    = CallProperties.CreateNewTag();
            string     toTag      = CallProperties.CreateNewTag();
            int        cSeq       = CallProperties.CreateNewCSeq();
            string     callId     = CallProperties.CreateNewCallId();
            SIPRequest catalogReq = QueryItems(fromTag, toTag, cSeq, callId);
            string     cmdStr     = GetPtzCmd(ucommand, dwStop, dwSpeed);

            PTZControl ptz = new PTZControl()
            {
                CommandType = CommandType.DeviceControl,
                DeviceID    = deviceId,
                SN          = new Random().Next(9999),
                PTZCmd      = cmdStr
            };
            string xmlBody = PTZControl.Instance.Save <PTZControl>(ptz);

            catalogReq.Body = xmlBody;
            Transport.SendRequest(RemoteEndPoint, catalogReq);
            _catalogTask             = new TaskTiming(catalogReq, Transport);
            this.SendRequestTimeout += _catalogTask.MessageSendRequestTimeout;
            _catalogTask.Start();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// PTZ云台控制
        /// </summary>
        /// <param name="ucommand">控制命令</param>
        /// <param name="dwStop">开始或结束</param>
        /// <param name="dwSpeed">速度</param>
        public void PtzContrl(int ucommand, int dwStop, int dwSpeed)
        {
            lock (_msgCore.RemoteTrans)
            {
                if (!_msgCore.RemoteTrans.ContainsKey(_remoteEndPoint.ToString()))
                {
                    OnSIPServiceChange(_deviceName + "-" + _deviceId + _remoteEndPoint.ToString(), SipServiceStatus.Wait);
                    return;
                }
            }

            string     fromTag    = CallProperties.CreateNewTag();
            string     toTag      = CallProperties.CreateNewTag();
            int        cSeq       = CallProperties.CreateNewCSeq();
            string     callId     = CallProperties.CreateNewCallId();
            SIPRequest catalogReq = PTZRequest(fromTag, toTag, cSeq, callId);
            string     cmdStr     = GetPtzCmd(ucommand, dwStop, dwSpeed);

            PTZControl ptz = new PTZControl()
            {
                CommandType = CommandType.DeviceControl,
                DeviceID    = _deviceId,
                SN          = new Random().Next(9999),
                PTZCmd      = cmdStr
            };
            string xmlBody = PTZControl.Instance.Save <PTZControl>(ptz);

            catalogReq.Body = xmlBody;
            _msgCore.Transport.SendRequest(_remoteEndPoint, catalogReq);
        }
Ejemplo n.º 3
0
        public void Initialize(SettingsBase settings) //throws Exception
        {
            //Get the Foscam camera type (MJPEG or HD)
            FoscamCameraType cameraType;
            string           _cameraType = (string)settings[PTZSettings.SETTING_CAMERA_TYPE];

            if (_cameraType == null || _cameraType == "")
            {
                cameraType = DEFAULT_CAMERA_TYPE;
            }
            else
            if (string.Equals(_cameraType, SETTING_CAMERA_FOSCAM_HD, StringComparison.OrdinalIgnoreCase))
            {
                cameraType = FoscamCameraType.FoscamHD;
            }
            else if (string.Equals(_cameraType, SETTING_CAMERA_FOSCAM_MJPEG, StringComparison.OrdinalIgnoreCase))
            {
                cameraType = FoscamCameraType.FoscamMJPEG;
            }
            else
            {
                throw new ArgumentNullException(PTZSettings.SETTING_CAMERA_TYPE);
            }

            //Get the camera URL
            string url = (string)settings[PTZSettings.SETTING_CAMERA_URL];

            if (url == null || url == "")
            {
                throw new ArgumentNullException(PTZSettings.SETTING_CAMERA_URL);
            }

            //Get the username
            string username = (string)settings[PTZSettings.SETTING_CAMERA_USERNAME] ?? DEFAULT_USERNAME;

            //Get the password
            string password = (string)settings[PTZSettings.SETTING_CAMERA_PASSWORD] ?? DEFAULT_PASSWORD;

            //Create motion and zoom controllers
            _motion = FoscamMotion.CreateFoscamMotionController(cameraType, url, username, password);
            _zoom   = FoscamZoom.CreateFoscamZoomController(cameraType, url, username, password);

            //Create PTZ control UI
            _ptz = new PTZControl()
            {
                MotionController = _motion, ZoomController = _zoom
            };

            _minPanAngle = (double?)settings[PTZSettings.SETTING_MIN_PAN_ANGLE] ?? DEFAULT_MIN_PAN_ANGLE;
            _maxPanAngle = (double?)settings[PTZSettings.SETTING_MAX_PAN_ANGLE] ?? DEFAULT_MAX_PAN_ANGLE;

            _presetCount  = (int?)settings[PTZSettings.SETTING_PRESET_COUNT] ?? DEFAULT_PRESET_COUNT;
            _presetPrefix = (string)settings[PTZSettings.SETTING_PRESET_PREFIX] ?? DEFAULT_PRESET_PREFIX;

            //Unzoom
            ZoomLevel = 0;
            _motion.MotionGotoCenter();
        }
Ejemplo n.º 4
0
        private void btnPTZ_Click(object sender, EventArgs e)
        {
            PTZControl dlg = new PTZControl();

            dlg.m_lUserID     = m_lUserID;
            dlg.m_lChannel    = 1;
            dlg.m_lRealHandle = m_lRealHandle;
            dlg.ShowDialog();
        }
Ejemplo n.º 5
0
        private void DisplayModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(DisplayModel.StreamInfoArray):
                updateStreamTypes();
                break;

            case nameof(DisplayModel.StreamName):
                WindowUtil.BeginInvoke(() => { SelectedStreamType = DisplayModel.StreamName == null ? DefaultStreamType : DisplayModel.StreamName; });
                break;

            case nameof(DisplayModel.VideoName):
                if (PTZControl.IsShowControl)
                {
                    PTZControl.UpdatePTZStatus();
                    TrackSource.LoadTrackSwap(VideoId);
                    SwitchModel.UpdateSwitchInfo();
                }
                break;
            }
        }