/// <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(); }
/// <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); }
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(); }
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(); }
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; } }