Esempio n. 1
0
 public void CheckTask(bool LongRun)
 {
     Repeater.RunTask();
     if (LongRun)
     {
         ConsoleResponseBoolean variable = Console.GetOnOff(string.Format(Variables.V_camera_stream_enabled, ID));
         if (variable.State == ConsoleCommandState.Failure)
         {
             throw new LogicException(string.Format("{0} is not a boolean variable!", Variables.V_camera_stream_enabled));
         }
         if (variable.Value)
         {
             if ((encoderProcess == null || encoderProcess.HasExited) && Program.ThreadsRunning)
             {
                 StartStream(Console.GetValue(string.Format(Variables.V_camera_url, ID)).Value,
                             hostname);
             }
         }
         else
         {
             if ((encoderProcess != null && !encoderProcess.HasExited) && Program.ThreadsRunning)
             {
                 Console.WriteLine("Killing camera {0}", ID);
                 Terminate();
             }
         }
     }
 }
Esempio n. 2
0
        public void CheckTask(bool LongRun)
        {
            if (!LongRun)
            {
                return;
            }
            ConsoleResponseBoolean variable = Console.GetOnOff(string.Format(Variables.V_camera_enabled, ID));

            if (variable.State == ConsoleCommandState.Failure)
            {
                throw new LogicException(string.Format("{0} is not a boolean variable!", Variables.V_camera_enabled));
            }
            if (variable.Value)
            {
                if ((StreamSaveThread == null || StreamSaveThread.HasExited) && Program.ThreadsRunning)
                {
                    StartStream(Console.GetValue(string.Format(Variables.V_camera_url, ID)).Value,
                                string.Format(Console.GetValue(Variables.V_camera_save_path).Value, ID) +
                                Console.GetValue(string.Format(Variables.V_camera_save_format, ID)).Value);
                }
            }
            else
            {
                if ((StreamSaveThread != null && !StreamSaveThread.HasExited) && Program.ThreadsRunning)
                {
                    Console.WriteLine("Killing camera {0}", ID);
                    Terminate();
                }
            }
        }
Esempio n. 3
0
        public void CheckTask(bool LongRun)
        {
            if (!LongRun)
            {
                return;
            }
            ConsoleResponseBoolean variable = Console.GetOnOff(string.Format(Variables.V_camera_enabled, ID));

            if (variable.State == ConsoleCommandState.Failure)
            {
                throw new LogicException(string.Format("{0} is not a boolean variable!", Variables.V_camera_enabled));
            }
            if (variable.Value)
            {
                if ((stream == null || !stream.CanWrite) && Program.ThreadsRunning)
                {
                    StartStream();
                }
                else
                {
                    if (DateTime.Now >= NextSegment)
                    {
                        StartStream();
                    }
                }

                if (DateTime.Now >= NextFlush && LongRun)
                {
                    stream.Flush(true);
                    NextFlush = DateTime.Now.AddMinutes(1);
                }
            }
            else
            {
                /* if ((StreamSaveThread != null && !StreamSaveThread.HasExited) && Program.ThreadsRunning)*/
                if (stream != null)
                {
                    Console.WriteLine("Killing camera {0}", ID);
                    Terminate();
                }
            }
        }
Esempio n. 4
0
        public static string GetPage(HttpListenerContext context)
        {
            string ACTION = "";
            int    id;

            if (context.Request.QueryString.Count != 0)
            {
                foreach (string key in context.Request.QueryString.AllKeys)
                {
                    switch (key)
                    {
                    case "stops":
                        if (int.TryParse(context.Request.QueryString[key], out id))
                        {
                            if (Console.GetOnOff(string.Format(Variables.V_camera_stream_enabled, id)).Value)
                            {
                                ConsoleResponse cr = Console.SetValue(string.Format(Variables.V_camera_stream_enabled, id), "false");
                                if (cr.State == ConsoleCommandState.Sucess)
                                {
                                    ACTION += "Sucess! Camera " + id + " disabled.<br/>";
                                }
                                else
                                {
                                    ACTION += "Failure while disabling camera " + id + ": " + cr.Value + "<br/>";
                                }
                            }
                        }

                        break;

                    case "starts":
                        if (int.TryParse(context.Request.QueryString[key], out id))
                        {
                            if (!Console.GetOnOff(string.Format(Variables.V_camera_stream_enabled, id)).Value)
                            {
                                ConsoleResponse cr = Console.SetValue(string.Format(Variables.V_camera_stream_enabled, id), "true");
                                if (cr.State == ConsoleCommandState.Sucess)
                                {
                                    ACTION += "Sucess! Camera " + id + " enabled.<br/>";
                                }
                                else
                                {
                                    ACTION += "Failure while enabling camera " + id + ": " + cr.Value + "<br/>";
                                }
                            }
                        }
                        break;
                    }
                }
            }

            string camerafor = "";

            // Count is protected from having non numurical values so if this fails look elsewhere
            int count = int.Parse(Console.GetValue(Variables.V_camera_count).Value);

            for (int i = 0; i < count; i++)
            {
                camerafor += TemplateProcessor.Process(Environment.CurrentDirectory + "\\HTTP\\templates\\control.camerafor.template", new Dictionary <string, Func <string> >()
                {
                    { "URI", () => { return(context.Request.Url.LocalPath); } },
                    { "STATUS", () => { return(Console.GetValue(string.Format(Variables.V_camera_stream_enabled, i)).Value); } },
                    { "ID", () => { return(i.ToString()); } },
                });
            }


            return(TemplateProcessor.Process(Environment.CurrentDirectory + "\\HTTP\\templates\\control.template", new Dictionary <string, Func <string> >()
            {
                { "URI", () => { return context.Request.Url.LocalPath; } },
                { "ACTION", () => { return ACTION; } },
                { "control.camerafor.template", () => { return camerafor; } },
            }));
        }
Esempio n. 5
0
        private void StartStream()
        {
            string filename = string.Format(Console.GetValue(Variables.V_camera_save_path).Value, ID) +
                              DateTime.Now.ToString(Console.GetValue(string.Format(Variables.V_camera_save_format, ID)).Value);

            Debugging.DebugLog(Debugging.DebugLevel.Info, "Starting Camera " + ID);
            //We need to make sure the stream task is started also so we can pull the data from it
            ConsoleResponseBoolean variable = Console.GetOnOff(string.Format(Variables.V_camera_stream_enabled, ID));

            if (variable.State == ConsoleCommandState.Failure)
            {
                throw new LogicException(string.Format("{0} is not a boolean variable!", Variables.V_camera_stream_enabled));
            }
            if (!variable.Value)
            {
                Console.SetValue(string.Format(Variables.V_camera_stream_enabled, ID), "True");
            }


            try { stream?.Close(); } catch { };

            File.Delete(filename);
            stream = File.OpenWrite(filename);

            Program.CameraManager.GetGamera(ID)
            .StreamTask.Repeater.AddStream(
                new StreamClient(stream, (data, offset, length) => {
                try { stream.Write(data, offset, length);

                      /*      string s = ASCIIEncoding.ASCII.GetString(data, 0, data.Length);
                       *    var sb = new StringBuilder();
                       *    int i = 0;
                       *
                       *    sb.Append(" Capture Pattern: ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *    sb.Append("         Version: ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *    sb.Append("     Header Type: ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *    sb.Append("Granule Position: ")
                       *         .Append(BitConverter.ToUInt64(new byte[] { data[6],  data[7],  data[8], data[9], data[10], data[11], data[12], data[13] }, 0)).Append("\n");
                       *
                       *    sb.Append("Granule Position: ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *    sb.Append("Bitstream Number: ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *    sb.Append(" Page Seq Number: ")
                       *        .Append(data[i++].ToString("X2")).Append(" ") // 18
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *    sb.Append("        Checksum: ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append(" ")
                       *        .Append(data[i++].ToString("X2")).Append("\n");
                       *
                       *
                       *    sb.Append("\n");
                       *    Console.Write(sb.ToString());*/

                      return(true); } catch { }
                return(false);
            })
                );

            NextSegment = DateTime.Now.AddMinutes(30);
            NextFlush   = DateTime.Now.AddMinutes(1);
        }