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