본문 바로가기
IT/C#

[한화 비전 - SUNAPI] PTZ, Preset

by rimilove 2023. 7. 6.
반응형

- Pan-Tilt : nPan, nTilt 값에 따라 방향과 속도가 달라집니다.

public void PTZ_PanTilt(int nPan, int nTilt)
        {
            String strPreURI = "http://";
            String strIPAddress = _strDeviceIP;
            String strPort = _nDeviceHttpPort.ToString();
            String strFunction = String.Format("/stw-cgi/ptzcontrol.cgi?msubmenu=continuous&action=control&Pan={0}&Tilt={1}&NormalizedSpeed=True", nPan, nTilt);
            String strQuery = strPreURI + strIPAddress + ":" + strPort + strFunction;
            String strUserID = _strUserID;
            String strUserPWD = _strUserPWD;

            Console.WriteLine(strQuery);    // Query 출력

            WebRequest request = WebRequest.Create(strQuery);   // WebRequest 생성.
            request.Credentials = new NetworkCredential(strUserID, strUserPWD); // 계정 생성.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  // Response 호출.

            Console.WriteLine(response.StatusDescription);  // 응답 결과 출력

            response.Close();
        }

 

- PTZ Stop : 동작을 정지합니다.

        public void PTZ_Stop()
        {
            String strPreURI = "http://";
            String strIPAddress = _strDeviceIP;
            String strPort = _nDeviceHttpPort.ToString();
            String strFunction = "/stw-cgi/ptzcontrol.cgi?msubmenu=stop&action=control&OperationType=All";
            String strQuery = strPreURI + strIPAddress + ":" + strPort + strFunction;
            String strUserID = _strUserID;
            String strUserPWD = _strUserPWD;

            Console.WriteLine(strQuery);    // Query 출력

            WebRequest request = WebRequest.Create(strQuery);   // WebRequest 생성.
            request.Credentials = new NetworkCredential(strUserID, strUserPWD); // 계정 생성.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  // Response 호출.

            Console.WriteLine(response.StatusDescription);  // 응답 결과 출력

            response.Close();
        }

 

- Preset  Info : 현재 설정되어 있는 Preset의 정보를 가져옵니다.

public String PTZ_Preset_Get()
        {
            String strPreURI = "http://";
            String strIPAddress = _strDeviceIP;
            String strPort = _nDeviceHttpPort.ToString();
            String strFunction = String.Format("/stw-cgi/ptzconfig.cgi?msubmenu=preset&action=view");
            String strQuery = strPreURI + strIPAddress + ":" + strPort + strFunction;
            String strUserID = _strUserID;
            String strUserPWD = _strUserPWD;

            Console.WriteLine(strQuery);    // Query 출력

            WebRequest request = WebRequest.Create(strQuery);   // WebRequest 생성.
            request.Credentials = new NetworkCredential(strUserID, strUserPWD); // 계정 생성.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  // Response 호출.

            Console.WriteLine(response.StatusDescription);  // 응답 결과 출력

            // ResponseStream 가져옴.
            Stream dataStream = response.GetResponseStream();

            // 현재 설정된 Preset의 정보를 가져옴.
            StreamReader streamReader = new StreamReader(dataStream);
            String strPresetInfo = streamReader.ReadToEnd();

            // Resource Release
            streamReader.Close();
            dataStream.Close();
            response.Close();

            return strPresetInfo;
        }

 

- Preset Move : 해당 Preset 번호로 움직입니다.

public void PTZ_Preset_Move(int nNumber)
        {
            String strPreURI = "http://";
            String strIPAddress = _strDeviceIP;
            String strPort = _nDeviceHttpPort.ToString();
            String strFunction = String.Format("/stw-cgi/ptzcontrol.cgi?msubmenu=preset&action=control&Preset={0}", nNumber);
            String strQuery = strPreURI + strIPAddress + ":" + strPort + strFunction;
            String strUserID = _strUserID;
            String strUserPWD = _strUserPWD;

            Console.WriteLine(strQuery);    // Query 출력

            WebRequest request = WebRequest.Create(strQuery);   // WebRequest 생성.
            request.Credentials = new NetworkCredential(strUserID, strUserPWD); // 계정 생성.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  // Response 호출.

            Console.WriteLine(response.StatusDescription);  // 응답 결과 출력

            response.Close();
        }

 

- Preset Remove : 해당 Preset 번호를 삭제합니다.

public void PTZ_Preset_Remove(int nNumber)
        {
            String strPreURI = "http://";
            String strIPAddress = _strDeviceIP;
            String strPort = _nDeviceHttpPort.ToString();
            String strFunction = String.Format("/stw-cgi/ptzconfig.cgi?msubmenu=preset&action=remove&Preset={0}", nNumber);
            String strQuery = strPreURI + strIPAddress + ":" + strPort + strFunction;
            String strUserID = _strUserID;
            String strUserPWD = _strUserPWD;

            Console.WriteLine(strQuery);    // Query 출력

            WebRequest request = WebRequest.Create(strQuery);   // WebRequest 생성.
            request.Credentials = new NetworkCredential(strUserID, strUserPWD); // 계정 생성.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  // Response 호출.

            Console.WriteLine(response.StatusDescription);  // 응답 결과 출력

            response.Close();
        }
반응형