본문 바로가기
IT/C#

[한화 비전 - SUNAPI] SnapShot

by rimilove 2023. 7. 4.
반응형

ActiveX 타입의 SDK 가 더이상 지원 되지 않음에 따라 SUNAPI를 사용해야할 필요성이 생겼습니다.

 

C#으로 만든 SnapShot  Code 는 다음과 같습니다.

 

private String SnapShot()
        {
            String strPreURI = "http://";
            String strIPAddress = _strDeviceIP;
            String strPort = _nDeviceHttpPort.ToString();
            String strFunction = "/stw-cgi/video.cgi?msubmenu=snapshot&action=view&Profile=1";
            String strQuery = strPreURI + strIPAddress + ":" + strPort + strFunction;
            String strUserID = _strUserID;
            String strUserPWD = _strUserPWD;
            String strSnapShotDir = _strSnapShotDir;

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

            // SnapShot 폴더 생성.
            if (!Directory.Exists(strSnapShotDir))
                Directory.CreateDirectory(strSnapShotDir);

            // WebRequest 생성.
            WebRequest request = WebRequest.Create(strQuery);

            // 계정 생성.
            request.Credentials = new NetworkCredential(strUserID, strUserPWD);

            // 파일명 생성.
            String strFilePath = Path.Combine(strSnapShotDir, DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".jpg");

            // Response 호출.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            
            // 응답 결과 출력
            Console.WriteLine(response.StatusDescription);

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

            // File Stream 생성.
            FileStream fileStream = new FileStream(strFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);

            // Write Stream.
            dataStream.CopyTo(fileStream);

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

            return strFilePath;
        }

 

반응형