135 lines
3.2 KiB
C#
135 lines
3.2 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace SCMA
|
|
{
|
|
#region -- ModelDesign Class --
|
|
|
|
/// <summary>
|
|
/// Classe per serializzazione / deserializzazione del datamodel x le informazioni necessarie x ADAPTER OPC-UA 2.1+
|
|
///
|
|
/// ref: http://www.cambiaresearch.com/articles/33/how-can-i-easily-manage-an-xml-configuration-file-in-dotnet
|
|
/// </summary>
|
|
[Serializable]
|
|
[XmlRoot("ModelDesign")]
|
|
public class ModelDesign
|
|
{
|
|
|
|
cMachine mMachine;
|
|
|
|
/// <summary>
|
|
/// init conf adapter
|
|
/// </summary>
|
|
public ModelDesign()
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Classe di base oggetti OPC-UA in Datamodel da deserializzare
|
|
/// </summary>
|
|
public class ouBaseObj
|
|
{
|
|
//[XmlAttribute("SymbolicName")]
|
|
[XmlAttribute]
|
|
public string SymbolicName { get; set; }
|
|
[XmlAttribute("BrowseName")]
|
|
public string BrowseName { get; set; }
|
|
[XmlAttribute("DataType")]
|
|
public string DataType { get; set; }
|
|
[XmlAttribute("ValueRank")]
|
|
public string ValueRank { get; set; }
|
|
}
|
|
|
|
public class Property : ouBaseObj
|
|
{
|
|
[XmlAttribute("Value")]
|
|
public string Value { get; set; }
|
|
}
|
|
|
|
public class ouVariable : ouBaseObj
|
|
{
|
|
[XmlAttribute("Units")]
|
|
public string Units { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Oggetto più esterno Machine
|
|
/// </summary>
|
|
[Serializable]
|
|
public class cMachine
|
|
{
|
|
public Property Model { get; set; }
|
|
}
|
|
|
|
public cMachine Machine
|
|
{
|
|
get
|
|
{
|
|
return mMachine;
|
|
}
|
|
set
|
|
{
|
|
mMachine = value;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Serializzazione XML dell'oggetto conf dell'adapter
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <param name="c"></param>
|
|
public static void Serialize(string file, ModelDesign c)
|
|
{
|
|
// prima provo a creare il file vuoto...
|
|
if (!File.Exists(file))
|
|
{
|
|
string dirPath = file.Substring(0, file.LastIndexOf('\\'));
|
|
// verifico directory
|
|
if (!Directory.Exists(dirPath))
|
|
{
|
|
Directory.CreateDirectory(dirPath);
|
|
}
|
|
}
|
|
// salvo effettivamente file...
|
|
XmlSerializer xs = new XmlSerializer(c.GetType());
|
|
StreamWriter writer = File.CreateText(file);
|
|
xs.Serialize(writer, c);
|
|
writer.Flush();
|
|
writer.Close();
|
|
}
|
|
/// <summary>
|
|
/// deserializzazione oggetto conf adapter
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <returns></returns>
|
|
public static ModelDesign Deserialize(string file)
|
|
{
|
|
XmlSerializer xs = new XmlSerializer(typeof(ModelDesign));
|
|
StreamReader reader = File.OpenText(file);
|
|
ModelDesign c = (ModelDesign)xs.Deserialize(reader);
|
|
reader.Close();
|
|
return c;
|
|
}
|
|
/// <summary>
|
|
/// restitusice forma XML grezza del file
|
|
/// </summary>
|
|
/// <param name="file"></param>
|
|
/// <returns></returns>
|
|
public static string rawXml(string file)
|
|
{
|
|
string answ = "";
|
|
XmlSerializer xs = new XmlSerializer(typeof(ModelDesign));
|
|
StreamReader reader = File.OpenText(file);
|
|
answ = reader.ReadToEnd();
|
|
reader.Close();
|
|
return answ;
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
}
|