using System; using System.Collections.Generic; using System.Diagnostics; using System.Xml; namespace DMX2 { /// /// Univers DMX. /// Chaque univers DMX représente un patch des circuits virtuels sur 512 dimmers DMX /// public class UniversDMX { /// structure indiquant le mode de calcul d'un octet sur la tramme DMX public struct Dimmer { public Circuit circuitAssocié; public FTransfer fonctionTransfert; public float param1; // Paramètres pour fonction de transfert public float param2; } public static int maxid=1; public UniversDMX () { Nom = "Univers DMX n°" + maxid++.ToString (); for (int i = 0; i<_dimmers.Length; i++) { _dimmers[i].fonctionTransfert = FTransfer.lineaire; _dimmers[i].param1 = 100; } } Dimmer[] _dimmers = new Dimmer[512]; bool[] allumageForce = new bool[512]; public bool[] AllumageForce { get { return allumageForce; } } public string Nom; public enum FTransfer { lineaire, log, exp } public Dimmer[] Dimmers { get { return _dimmers; } } /// Calcule la trame DMX /// tampon pour le stockage de la trame calculée /// Offset de début de trame dans le tampon /// Nombre d'octets a calculer public void CalculUnivers(byte[] valeurs, int offset, int count) { Dimmer g; Debug.Assert(valeurs.Length == _dimmers.Length); for(int i = 0 ; i attendu."); UniversDMX univ = new UniversDMX (); univ.Nom = el.GetAttribute("nom"); XmlElement xmlDim; Dimmer dim; foreach (var xd in el.GetElementsByTagName("Dimmer")) { xmlDim = xd as XmlElement; dim.circuitAssocié = c.GetCircuitByID(int.Parse(xmlDim.GetAttribute("circuit"))); FTransfer.TryParse(xmlDim.GetAttribute("ft"),out dim.fonctionTransfert); dim.param1 = float.Parse(xmlDim.GetAttribute("param1")); dim.param2 = float.Parse(xmlDim.GetAttribute("param2")); univ.Dimmers[int.Parse(xmlDim.GetAttribute("num"))] = dim; } return univ; } } }