/// <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); */ }
/// <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); }; }
/// <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); }
/// <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); }
/// <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); }
static StaticExtensionScadaWpfUI() { string s = Environment.GetEnvironmentVariable("SCADA_DESIGN"); if (System.IO.File.Exists(s)) { scada = new EmptyScadaInterface(s); } }
private static void SetPrivate(this Control control, IScadaInterface scada) { control.RecursiveAction((Control c) => { if (c is IScadaConsumer) { (c as IScadaConsumer).Scada = scada; } }); }
/// <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); } }
/// <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); }
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); } }
/// <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); } }
/// <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); }); }
/// <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); }
/// <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)); }
/// <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); }
/// <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])); }
/// <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)); }