Exemple #1
0
 /// <summary>
 /// Saves SCADA to file
 /// </summary>
 /// <param name="scada">The SCADA</param>
 /// <param name="filename">The filename</param>
 public static void SaveAsXml(this IScadaInterface scada, string filename)
 {
     /*
      * XmlDocument doc = scada.CreateXML();
      * doc.Save(filename);
      */
 }
Exemple #2
0
 /// <summary>
 /// Sets scada interface to control
 /// </summary>
 /// <param name="control">The control</param>
 /// <param name="scada">The scada</param>
 public static void Set(this DependencyObject control, IScadaInterface scada)
 {
     control.SetPrivate(scada);
     scada.OnRefresh += () => { control.SetPrivate(scada); };
     scada.OnStart   += () => { control.SetScadaEnabled(true); };
     scada.OnStop    += () => { control.SetScadaEnabled(false); };
 }
Exemple #3
0
        /// <summary>
        /// Gets object list
        /// </summary>
        /// <typeparam name="T">Type of object</typeparam>
        /// <param name="scada">Scada</param>
        /// <returns>The list</returns>
        public static List <string> GetObjectList <T>(this IScadaInterface scada) where T : class
        {
            Type          type                    = typeof(T);
            TypeInfo      typeInfo                = IntrospectionExtensions.GetTypeInfo(type);
            bool          isInterface             = typeInfo.IsInterface;
            List <string> l                       = new List <string>();
            Dictionary <string, List <string> > d = scada.Objects;

            foreach (string name in d.Keys)
            {
                List <string> lt = d[name];
                foreach (string t in lt)
                {
                    Type     ty = t.DetectType();
                    TypeInfo ti = IntrospectionExtensions.GetTypeInfo(ty);
                    if (isInterface)
                    {
                        if (ti.ImplementedInterfaces.Contains(type))
                        {
                            l.Add(name);
                            continue;
                        }
                    }
                    if (type.Compare(ty))
                    {
                        l.Add(name);
                    }
                }
            }
            return(l);
        }
Exemple #4
0
 /// <summary>
 /// Conerts SCADA to string
 /// </summary>
 /// <param name="scada">SCADA</param>
 /// <returns>The bytes</returns>
 public static byte[] ToBytes(this IScadaInterface scada)
 {
     if (scada is ScadaDesktop)
     {
         return((scada as ScadaDesktop).Desktop.ToBytes());
     }
     return(null);
 }
Exemple #5
0
 /// <summary>
 /// Conerts SCADA to string
 /// </summary>
 /// <param name="scada">SCADA</param>
 /// <returns>The string</returns>
 public static string ToScadaString(this IScadaInterface scada)
 {
     if (scada is ScadaDesktop)
     {
         return((scada as ScadaDesktop).Desktop.DesktopToString());
     }
     return(null);
 }
Exemple #6
0
        static StaticExtensionScadaWpfUI()
        {
            string s = Environment.GetEnvironmentVariable("SCADA_DESIGN");

            if (System.IO.File.Exists(s))
            {
                scada = new EmptyScadaInterface(s);
            }
        }
Exemple #7
0
 private static void SetPrivate(this Control control, IScadaInterface scada)
 {
     control.RecursiveAction((Control c) =>
     {
         if (c is IScadaConsumer)
         {
             (c as IScadaConsumer).Scada = scada;
         }
     });
 }
Exemple #8
0
        /// <summary>
        /// List of real SCADA parameters
        /// </summary>
        /// <param name="scada">The SCADA</param>
        /// <param name="isInput">True in case of input parameter</param>
        /// <returns>List of real parameters</returns>
        public static List <string> GetDataList(this IScadaInterface scada, bool isInput)
        {
            Dictionary <string, object> d = (isInput) ? scada.Inputs : scada.Outputs;
            List <string> l = new List <string>();

            foreach (string key in d.Keys)
            {
                l.Add(key);
            }
            return(l);
        }
 IScadaConsumer IScadaConsumerFactory.this[IScadaInterface scada, object prototype]
 {
     get
     {
         foreach (IScadaConsumerFactory factory in factories)
         {
             IScadaConsumer consumer = factory[scada, prototype];
             if (consumer != null)
             {
                 return(consumer);
             }
         }
         return(null);
     }
 }
Exemple #10
0
        /// <summary>
        /// List of real SCADA parameters
        /// </summary>
        /// <param name="scada">The SCADA</param>
        /// <param name="isInput">True in case of input parameter</param>
        /// <returns>List of real parameters</returns>
        public static List <string> GetRealList(this IScadaInterface scada, bool isInput)
        {
            Dictionary <string, object> d = (isInput) ? scada.Inputs : scada.Outputs;
            List <string> l = new List <string>();

            foreach (string key in d.Keys)
            {
                Type t = d[key].DetectType();
                if (t == null)
                {
                    continue;
                }
                if (t.Equals(typeof(float)) | t.Equals(typeof(double)))
                {
                    l.Add(key);
                }
            }
            return(l);
        }
Exemple #11
0
        static StaticExtensionCelestrakNORADSatellitesWpfUI()
        {
            Scada.Desktop.StaticExtensionScadaDesktop.ScadaFactory.OnCreateXml +=
                (Diagram.UI.Interfaces.IDesktop desktop, XElement document) =>
            {
                List <string> ls = new List <string>();
                desktop.ForEach <SatelliteData>((SatelliteData satellite) =>
                {
                    ls.Add(satellite.GetRootName());
                });
                document.AddItems(CelestrakNORADSatellitesSatelliteData, ls);
            };

            string s = Environment.GetEnvironmentVariable("SCADA_DESIGN");

            if (System.IO.File.Exists(s))
            {
                ScadaDesign = new EmptyScadaInterface(s);
            }
        }
Exemple #12
0
        /// <summary>
        /// Adds event output
        /// </summary>
        /// <param name="scada">Scada</param>
        /// <param name="eventName">Name of event</param>
        /// <param name="outputName">Name of output</param>
        static public void AddEventOutput(this IScadaInterface scada, string eventName, string outputName)
        {
            if (!(scada is IEventOutput))
            {
                return;
            }
            Dictionary <string, List <string> > d = (scada as IEventOutput).EventOutput;
            List <string> l = null;

            if (d.ContainsKey(eventName))
            {
                l = d[eventName];
            }
            else
            {
                l            = new List <string>();
                d[eventName] = l;
            }
            if (!l.Contains(outputName))
            {
                l.Add(outputName);
            }
        }
Exemple #13
0
 /// <summary>
 /// Sets scada interface to control
 /// </summary>
 /// <param name="control">The control</param>
 /// <param name="scada">The scada</param>
 private static void SetPrivate(this DependencyObject control, IScadaInterface scada)
 {
     control.RecursiveAction((DependencyObject c) =>
     {
         if (scadaConsumers.ContainsKey(c))
         {
             return(true);
         }
         IScadaConsumer sc = ScadaConsumerFactory[scada, c];
         if (sc != null)
         {
             sc.Scada          = scada;
             scadaConsumers[c] = sc;
             return(true);
         }
         if (c is IScadaConsumer)
         {
             (c as IScadaConsumer).Scada = scada;
             return(true);
         }
         return(false);
     });
 }
Exemple #14
0
        /// <summary>
        /// Creates XML document from SCADA
        /// </summary>
        /// <param name="scada">The SCADA</param>
        /// <returns>The document</returns>
        public static XElement CreateXML(this IScadaInterface scada)
        {
            XElement x = XElement.Parse("<Scada/>");

            Dictionary <string, object>[] d = new Dictionary <string, object>[]
            {
                scada.Inputs, scada.Outputs
            };
            string[] ss = new string[] { Inputs, Outputs };
            for (int i = 0; i < 2; i++)
            {
                XElement inout = XElement.Parse("<" + ss[i] + "/>");
                x.Add(inout);
                Dictionary <string, object> inouts = d[i];
                foreach (string key in inouts.Keys)
                {
                    XElement e = XElement.Parse("<" + Item + "/>");
                    inout.Add(e);
                    Type t = inouts[key].ToType();
                    e.SetNameValue(key, t.AssemblyQualifiedName);
                }
            }
            x.AddItems(Events, scada.Events);
            XElement objs = XElement.Parse("<" + Objects + "/>");

            x.Add(objs);
            Dictionary <string, List <string> > dob = scada.Objects;

            foreach (string key in dob.Keys)
            {
                XElement xob = XElement.Parse("<Object/>");
                xob.AddItems("Name", new string[] { key });
                objs.Add(xob);
                xob.AddItems(Item, dob[key]);
            }
            return(x);
        }
Exemple #15
0
        /// <summary>
        /// List of url providers
        /// </summary>
        /// <param name="scada">SCADA</param>
        /// <returns>The list</returns>
        public static List <string> GetUrlConsumerList(this IScadaInterface scada)
        {
            XElement document = scada.XmlDocument;

            return(document.GetItems(UrlConsumers));
        }
Exemple #16
0
 /// <summary>
 /// Creates Message box event handler
 /// </summary>
 /// <param name="window">Window</param>
 /// <param name="scada">SCADA</param>
 public static void CreateMessageBoxEventHandler(this Window window, IScadaInterface scada)
 {
     scada.ErrorHandler = new MessageBoxErrorHandler(window);
 }
Exemple #17
0
        /// <summary>
        /// Gets doubleoutput function
        /// </summary>
        /// <param name="scada">The SCADA</param>
        /// <param name="name">Function name</param>
        /// <returns>The function</returns>
        public static Func <double> GetDoubleOutput(this IScadaInterface scada, string name)
        {
            Func <object> f = scada.GetOutput(name);

            return(f.GetDoubleOutput(scada.Outputs[name]));
        }
Exemple #18
0
        /// <summary>
        /// Gets double input function
        /// </summary>
        /// <param name="scada">The SCADA</param>
        /// <param name="name">The function name</param>
        /// <returns>The function</returns>
        public static Action <double> GetDoubleInput(this IScadaInterface scada, string name)
        {
            Action <object> action = scada.GetInput(name);

            return(action.GetDoubleInput(scada.Inputs[name]));
        }
        /// <summary>
        /// List of cameras
        /// </summary>
        /// <param name="scada">SCADA</param>
        /// <returns>The list</returns>
        public static List <string> GetCameraList(this IScadaInterface scada)
        {
            XElement document = scada.XmlDocument;

            return(document.GetItems(ScadaDesktopMotion6D.Cameras));
        }