public void UpdateCamera(CameraValues camera, string filePath)
 {
     try
     {
         bool updated = false;
         var  cams    = System.IO.File.ReadAllLines(filePath).ToList();
         for (int i = 0; i < cams.Count; i++)
         {
             if (cams[i].Contains(camera.Id.ToString()))
             {
                 cams[i] = camera.Stringify();
                 updated = true;
                 break;
             }
         }
         if (!updated)
         {
             cams.Add(camera.Stringify());
         }
         System.IO.File.WriteAllLines(filePath, cams.ToArray());
     }
     catch (Exception ex)
     {
         return;
     }
 }
        /// <summary>
        /// Update/Create a Camera Setting on Web Db
        /// </summary>
        /// <param name="camera">Camera Setting to Update/Create</param>
        public async Task <bool> UpdateCamera(CameraValues camera)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(connections.DbConnectionString))
                {
                    conn.Open();
                    SqlCommand readComand = new SqlCommand(readCameraString, conn);
                    bool       UpDate     = false;
                    using (SqlDataReader cameraReader = await readComand.ExecuteReaderAsync())
                    {
                        if (cameraReader.HasRows)
                        {
                            while (cameraReader.Read())
                            {
                                if (camera.Id == new Guid((string)cameraReader["IdCamera"]))
                                {
                                    UpDate = true;
                                    break;
                                }
                            }
                        }
                    }

                    SqlCommand updateComand;
                    if (UpDate)
                    {
                        updateComand = new SqlCommand(upDateCameraString, conn);
                    }
                    else
                    {
                        updateComand = new SqlCommand(saveCameraString, conn);
                    }
                    updateComand.Parameters.Add("@IdCamera", SqlDbType.NVarChar).Value         = camera.Id.ToString();
                    updateComand.Parameters.Add("@Type", SqlDbType.NVarChar).Value             = camera.Type;
                    updateComand.Parameters.Add("@Locality", SqlDbType.NVarChar).Value         = camera.Location;
                    updateComand.Parameters.Add("@Position", SqlDbType.NVarChar).Value         = camera.Position;
                    updateComand.Parameters.Add("@ConnectionString", SqlDbType.NVarChar).Value = camera.ConnectionString;
                    updateComand.Parameters.Add("@User", SqlDbType.NVarChar).Value             = camera.User;
                    updateComand.Parameters.Add("@Password", SqlDbType.NVarChar).Value         = camera.Password;
                    updateComand.Parameters.Add("@UseDifferentStream", SqlDbType.Bit).Value    = !camera.MjpegStreamer;
                    updateComand.Parameters.Add("@UseComputerWebCam", SqlDbType.Bit).Value     = camera.LocalWebcam;
                    var done = await updateComand.ExecuteNonQueryAsync();

                    if (done == -1)
                    {
                        throw new Exception(updateComand.CommandText);
                    }

                    conn.Close();
                }
            }catch (Exception ex)
            {
                throw new Exception("Error on Updating Camera DB\n" + ex.Message);
            }
            return(true);
        }
        //Constructor-----------------------------------------------------------------

        /// <summary>
        /// Constructor which set all connections, detections settings and camera settings
        /// </summary>
        /// <param name="cam">Camera Settings</param>
        /// <param name="con">Connections Settings</param>
        /// <param name="det">Detection Settings</param>
        public VideoAnalyzer(CameraValues cam, Connections con, DetectionSetting det)
        {
            //Setting Camera/Connection
            camera            = cam.Clone();
            connections       = con.Clone();
            detectionSettings = det.Clone();

            //Manager Instantiation
            if (camera.MjpegStreamer)
            {
                Video = new VideoStreamManager();
            }
            else
            {
                Video = new SnapshotStreamManager();
            }
            Detector  = new FaceDetectionManager();
            Sentiment = new FaceSentimentManager();

            //Set Connections
            Sentiment.SetConnections(connections, camera);
            Detector.SetDetectionsSetting(detectionSettings);
            Video.SetConnections(camera);
            MaxRestart = connections.TimesOfRestart;

            //Set Event
            Video.FrameHandler       += GetFrame;
            Video.ErrorStreamHandler += ErrorHandler;

            //Set Timer
            streamTimer     = new Timer();
            connectionTimer = new Timer();
            restartTimer    = new Timer();
            detectionTimer  = new Timer();

            //streamTimer.Interval = new TimeSpan(0, 0, 0, camera.SecondTimeOut);
            //connectionTimer.Interval = new TimeSpan(0, 0, connections.SecondTimeout * 2);
            //restartTimer.Interval = new TimeSpan(0, 0, connections.SecondTimeout);
            //detectionTimer.Interval = new TimeSpan(0, 0, detectionSettings.SecondForDetection);


            streamTimer.Interval     = camera.SecondTimeOut * 1000;
            connectionTimer.Interval = connections.SecondTimeout * 2 * 1000;
            restartTimer.Interval    = connections.SecondTimeout * 1000;
            detectionTimer.Interval  = detectionSettings.SecondForDetection * 1000;


            streamTimer.Elapsed     += StreamNotWorking;
            restartTimer.Elapsed    += TryRestart;
            connectionTimer.Elapsed += ConnectionNotWorking;
            detectionTimer.Elapsed  += DetectFace;

            string root = System.Web.HttpContext.Current.Server.MapPath("~/Settings");

            LogsFilePath = string.Format("{0}\\{1}", root, "Logs\\LogsError.txt");
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Check if the current camera has the same Setting value of the passed camera
 /// </summary>
 /// <param name="cam">Camera to compare</param>
 /// <returns>True if the Cameras have the same setting values</returns>
 public bool IsEqual(CameraValues cam)
 {
     if (Id != cam.Id)
     {
         return(false);
     }
     if (Type != cam.Type)
     {
         return(false);
     }
     if (Location != cam.Location)
     {
         return(false);
     }
     if (Position != cam.Position)
     {
         return(false);
     }
     if (ConnectionString != cam.ConnectionString)
     {
         return(false);
     }
     if (User != cam.User)
     {
         return(false);
     }
     if (Password != cam.Password)
     {
         return(false);
     }
     if (MjpegStreamer != cam.MjpegStreamer)
     {
         return(false);
     }
     if (LocalWebcam != cam.LocalWebcam)
     {
         return(false);
     }
     if (Fps != cam.Fps)
     {
         return(false);
     }
     if (SecondTimeOut != cam.SecondTimeOut)
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Clone Method
        /// </summary>
        /// <returns>Clone of the original CameraValues</returns>
        public CameraValues Clone()
        {
            CameraValues cam = new CameraValues();

            cam.Id                    = this.Id;
            cam.Type                  = this.Type;
            cam.Location              = this.Location;
            cam.Position              = this.Position;
            cam.ConnectionString      = this.ConnectionString;
            cam.User                  = this.User;
            cam.Password              = this.Password;
            cam.MjpegStreamer         = this.MjpegStreamer;
            cam.Fps                   = this.Fps;
            cam.LocalWebcam           = this.LocalWebcam;
            cam.SecondTimeOut         = this.SecondTimeOut;
            cam.Status                = this.Status;
            cam.FaceDetectedOnRequest = FaceDetectedOnRequest;
            return(cam);
        }
 public void DeleteCamera(CameraValues camera, string filePath)
 {
     try
     {
         var cams = System.IO.File.ReadAllLines(filePath).ToList();
         for (int i = 0; i < cams.Count; i++)
         {
             if (cams[i].Contains(camera.Id.ToString()))
             {
                 cams.RemoveAt(i);
                 break;
             }
         }
         System.IO.File.WriteAllLines(filePath, cams.ToArray());
     }
     catch (Exception ex)
     {
         return;
     }
 }
        /// <summary>
        /// Read the camera setting from Web Db
        /// </summary>
        /// <returns>List of Camera settings read on Web Db (returned by Task)</returns>
        public async Task <List <CameraValues> > ReadCamera()
        {
            List <CameraValues> cameras = new List <CameraValues>();

            try
            {
                using (SqlConnection conn = new SqlConnection(connections.DbConnectionString))
                {
                    conn.Open();
                    SqlCommand    readComand   = new SqlCommand(readCameraString, conn);
                    SqlDataReader cameraReader = await readComand.ExecuteReaderAsync();

                    if (cameraReader.HasRows)
                    {
                        while (cameraReader.Read())
                        {
                            CameraValues cam = new CameraValues();
                            cam.Id               = new Guid((string)cameraReader["IdCamera"]);
                            cam.Type             = (string)cameraReader["Type"];
                            cam.Location         = (string)cameraReader["Locality"];
                            cam.Position         = (string)cameraReader["Position"];
                            cam.ConnectionString = (string)cameraReader["ConnectionString"];
                            cam.User             = (string)cameraReader["User"];
                            cam.Password         = (string)cameraReader["Password"];
                            cam.MjpegStreamer    = !(bool)cameraReader["UseDifferentStream"];
                            cam.LocalWebcam      = (bool)cameraReader["UseComputerWebCam"];
                            cam.Fps              = 5;
                            cam.SecondTimeOut    = 20;
                            cam.Status           = "Stopped";
                            cameras.Add(cam);
                        }
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error on Reading Cameras From DB\n" + ex.Message);
            }
            return(cameras);
        }
        /// <summary>
        /// Delete a Camera Setting from Web Db
        /// </summary>
        /// <param name="camera">Camera Setting to delete</param>
        public async Task <bool> DeleteCamera(CameraValues camera)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(connections.DbConnectionString))
                {
                    conn.Open();
                    SqlCommand deleteCameraComand = new SqlCommand(deleteCameraString, conn);
                    deleteCameraComand.Parameters.Add("@IdCamera", SqlDbType.NVarChar).Value = camera.Id.ToString();

                    var done = await deleteCameraComand.ExecuteNonQueryAsync();

                    if (done == -1)
                    {
                        throw new Exception(deleteCameraComand.CommandText);
                    }
                }
            }catch (Exception ex)
            {
                throw new Exception("Error on Deleting Camera from Db" + ex.Message);
            }
            return(true);
        }