diff --git a/DMX-2.0/DMX-2.0.csproj b/DMX-2.0/DMX-2.0.csproj index ead22f0..2ce78fa 100644 --- a/DMX-2.0/DMX-2.0.csproj +++ b/DMX-2.0/DMX-2.0.csproj @@ -109,6 +109,9 @@ + + + diff --git a/DMX-2.0/DriverBoitierV1.cs b/DMX-2.0/DriverBoitierV1.cs index fd017e4..b66f05d 100644 --- a/DMX-2.0/DriverBoitierV1.cs +++ b/DMX-2.0/DriverBoitierV1.cs @@ -35,13 +35,14 @@ namespace DMX2 //Thread de boucle Thread loopthread=null; - UniversDMX patch=null; + public UniversDMX patch=null; - string portname = "/dev/ttyUSB0"; + string portname = ""; SerialPort serial = null; public DriverBoitierV1 (string serialport, string id): base(id) { + portname = serialport; //patch = Conduite.Courante.Patches[0]; //Start(); //serial = serialport; diff --git a/DMX-2.0/DriverBoitierV1UI.cs b/DMX-2.0/DriverBoitierV1UI.cs index 72ba9cb..f445d40 100644 --- a/DMX-2.0/DriverBoitierV1UI.cs +++ b/DMX-2.0/DriverBoitierV1UI.cs @@ -1,4 +1,7 @@ using System; +using System.Collections.Generic; +using Gtk; +using System.IO; namespace DMX2 { @@ -10,7 +13,44 @@ namespace DMX2 { drv = _drv; this.Build (); + ConstruitCBUnivers(); } + + ListStore lsCbUnivers = new ListStore(typeof(UniversDMX)); + void ConstruitCBUnivers () + { + cbUnivers.Model = lsCbUnivers; + var cellCbUnivers = new CellRendererText(); + cbUnivers.PackStart(cellCbUnivers,false); + cbUnivers.SetCellDataFunc(cellCbUnivers, new CellLayoutDataFunc(RenderUniversName)); + + + foreach(UniversDMX u in Conduite.Courante.Patches) + lsCbUnivers.AppendValues(u); + + TreeIter iter; + lsCbUnivers.GetIterFirst(out iter); + cbUnivers.SetActiveIter(iter); + + } + + void RenderUniversName (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter) + { + UniversDMX univers = tree_model.GetValue (iter, 0) as UniversDMX; + if(univers != null) + (cell as Gtk.CellRendererText).Text = univers.Nom; + } + + protected void OnCbUniversChanged (object sender, EventArgs e) + { + TreeIter iter; + if(cbUnivers.GetActiveIter(out iter)) + { + drv.patch = lsCbUnivers.GetValue(iter,0) as UniversDMX; + + } + } + } } diff --git a/DMX-2.0/DriverBoitierV2.cs b/DMX-2.0/DriverBoitierV2.cs new file mode 100644 index 0000000..afac87a --- /dev/null +++ b/DMX-2.0/DriverBoitierV2.cs @@ -0,0 +1,282 @@ +using System; +using System.Threading; +using System.IO.Ports; + +namespace DMX2 +{ + public class DriverBoitierV2 : DriverDMX, IEventProvider + { + + struct buttonState { + public buttonState(byte _button, bool _pressed){ + button=_button; pressed=_pressed; + } + public byte button; + public bool pressed; + } + + enum etatAutomate { + Deconnecte, + Transmission, + Erreur, + Reset, + Parametrage, + Fin + } + + bool[] buttons = new bool[8]; + bool[] watchButtons = new bool[8]; + + + // tampons Entrée/Sortie + byte[] inputbuffer = new byte[1]; + byte[] outputbuffer = new byte[260]; + + //Thread de boucle + Thread loopthread=null; + + public UniversDMX patch=null; + + string portname = ""; + SerialPort serial = null; + + public DriverBoitierV2 (string serialport, string id): base(id) + { + portname = serialport; + //patch = Conduite.Courante.Patches[0]; + //Start(); + //serial = serialport; + outputbuffer[0]=27; + outputbuffer[1]=68; + outputbuffer[4]=255; + + } + + void Start () + { + if (loopthread == null) { + loopthread = new Thread(new ThreadStart(MainLoop)); + loopthread.Start(); + } + } + + void Connection () + { + if (serial != null) { + serial.Close(); + serial.Dispose(); + } + serial = new SerialPort(portname, 460800,Parity.None,8,StopBits.One); + serial.DtrEnable = false; + serial.ReadTimeout = 15; + serial.WriteTimeout = 200; + serial.Open(); + etat = etatAutomate.Transmission; + } + + volatile etatAutomate etat = etatAutomate.Deconnecte; + DateTime finAttente = DateTime.Now; + + void MainLoop() + { + while(etat != etatAutomate.Fin) + { + switch (etat) { + case etatAutomate.Deconnecte: + Connection(); + Attente(DateTime.Now.AddMilliseconds(200)); + break; + case etatAutomate.Transmission: + finAttente = DateTime.Now.AddMilliseconds (22); + EnvoiTrame(); + Reception(); + Attente(finAttente); + break; + case etatAutomate.Erreur: + Deconnecte(); + Attente(DateTime.Now.AddSeconds(2)); + break; +// case etatAutomate.Parametrage: +// EnvoiParam(); +// break; +// case etatAutomate.Reset: +// EnvoiReset(); +// break; + } + } + Deconnecte(); + } + + void Attente (DateTime date) + { + int sleeptime = (int) (date - DateTime.Now).TotalMilliseconds; + if(sleeptime>2) + Thread.Sleep(sleeptime); + + while (DateTime.Now\d+)?", + System.Text.RegularExpressions.RegexOptions.Compiled); + + System.Collections.Concurrent.ConcurrentQueue eventsPending = + new System.Collections.Concurrent.ConcurrentQueue(); + + bool IEventProvider.Bind (string eventId) + { + var res = regexEventID.Match (eventId); + if (res.Success) { + int bt = int.Parse (res.Groups ["button"].Value); + if(bt<0||bt>7) return false; + watchButtons[bt] = true; + return true; + } + return false; + } + + void IEventProvider.Unbind (string eventId) + { + var res = regexEventID.Match (eventId); + if (res.Success) { + int bt = int.Parse (res.Groups ["button"].Value); + if(bt<0||bt>7) return ; + watchButtons[bt] = false; + } + return; + } + + Gtk.Menu IEventProvider.GetProviderSubMenu (EventManager.EventMenuData state, Gtk.ButtonPressEventHandler handler) + { + Gtk.Menu retmenu = new Gtk.Menu (); + + Gtk.MenuItem evmenuitem = new Gtk.MenuItem ("Boutons"); + retmenu.Add (evmenuitem); + Gtk.Menu evmenu = new Gtk.Menu (); + evmenuitem.Submenu = evmenu; + + for (int i= 0; i<8;i++ ) { + Gtk.MenuItem item = new Gtk.MenuItem(string.Format("Bouton {0}",i+1)); + item.Data[EventManager.EventIdKey] = string.Format("BV2-B{0}",i); + item.Data[EventManager.StateKey] = state; + item.ButtonPressEvent += handler; + evmenu.Add (item); + } + return retmenu; + } + + void IEventProvider.ProcessEvents (EventManagerCallback callback) + { + buttonState bt; + EventData evd; + while (eventsPending.TryDequeue(out bt)) { + evd.id= string.Format("BV2-B{0}",bt.button ); + evd.value = bt.pressed?(byte)0xFF:(byte)0x00; + callback(evd); + } + } + + string IEventProvider.MenuName { + get { + return "Boitier V2"; + } + } + #endregion + + + } +} + diff --git a/DMX-2.0/DriverBoitierV2UI.cs b/DMX-2.0/DriverBoitierV2UI.cs new file mode 100644 index 0000000..e4249cf --- /dev/null +++ b/DMX-2.0/DriverBoitierV2UI.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using Gtk; +using System.IO; + +namespace DMX2 +{ + [System.ComponentModel.ToolboxItem(true)] + public partial class DriverBoitierV2UI : Gtk.Bin + { + DriverBoitierV2 drv; + public DriverBoitierV2UI (DriverBoitierV2 _drv) + { + drv = _drv; + this.Build (); + ConstruitCBUnivers(); + } + + ListStore lsCbUnivers1 = new ListStore(typeof(UniversDMX)); + ListStore lsCbUnivers2 = new ListStore(typeof(UniversDMX)); + void ConstruitCBUnivers () + { + cbUnivers1.Model = lsCbUnivers1; + var cellCbUnivers1 = new CellRendererText(); + cbUnivers1.PackStart(cellCbUnivers1,false); + cbUnivers1.SetCellDataFunc(cellCbUnivers1, new CellLayoutDataFunc(RenderUniversName1)); + + + foreach(UniversDMX u in Conduite.Courante.Patches) + lsCbUnivers1.AppendValues(u); + + TreeIter iter; + lsCbUnivers1.GetIterFirst(out iter); + cbUnivers1.SetActiveIter(iter); + + cbUnivers2.Model = lsCbUnivers2; + var cellCbUnivers2 = new CellRendererText(); + cbUnivers2.PackStart(cellCbUnivers2,false); + cbUnivers2.SetCellDataFunc(cellCbUnivers2, new CellLayoutDataFunc(RenderUniversName2)); + + + foreach(UniversDMX u in Conduite.Courante.Patches) + lsCbUnivers2.AppendValues(u); + + //TreeIter iter; + lsCbUnivers2.GetIterFirst(out iter); + cbUnivers2.SetActiveIter(iter); + + } + + void RenderUniversName1 (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter) + { + UniversDMX univers = tree_model.GetValue (iter, 0) as UniversDMX; + if(univers != null) + (cell as Gtk.CellRendererText).Text = univers.Nom; + } + + void RenderUniversName2 (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter) + { + UniversDMX univers = tree_model.GetValue (iter, 0) as UniversDMX; + if(univers != null) + (cell as Gtk.CellRendererText).Text = univers.Nom; + } + + } +} + diff --git a/DMX-2.0/GestionDriversUI.cs b/DMX-2.0/GestionDriversUI.cs index eec1dbe..8cc294a 100644 --- a/DMX-2.0/GestionDriversUI.cs +++ b/DMX-2.0/GestionDriversUI.cs @@ -19,7 +19,6 @@ namespace DMX2 lsDriver = new Gtk.ListStore(typeof (String)); lsDriver.AppendValues("V1 256/0/0/8","0"); - lsDriver.AppendValues("V2 512/512/16/16","1"); lsDriver.AppendValues("V2 1024/512/16/16","2"); comboDriver.Model = lsDriver; @@ -140,6 +139,10 @@ namespace DMX2 drv = new DriverBoitierV1(fi.FullName, fi.Name); Conduite.Courante.Drivers.Add(drv); break; + case 1: + drv = new DriverBoitierV2(fi.FullName, fi.Name); + Conduite.Courante.Drivers.Add(drv); + break; default: return; } diff --git a/DMX-2.0/gtk-gui/DMX2.DriverBoitierV1UI.cs b/DMX-2.0/gtk-gui/DMX2.DriverBoitierV1UI.cs index e708cfe..d439474 100644 --- a/DMX-2.0/gtk-gui/DMX2.DriverBoitierV1UI.cs +++ b/DMX-2.0/gtk-gui/DMX2.DriverBoitierV1UI.cs @@ -7,7 +7,7 @@ namespace DMX2 private global::Gtk.VBox vbox2; private global::Gtk.Label label1; private global::Gtk.Table table1; - private global::Gtk.ComboBox combobox1; + private global::Gtk.ComboBox cbUnivers; private global::Gtk.Label label4; private global::Gtk.Label label5; private global::Gtk.Label lblEtat; @@ -37,10 +37,10 @@ namespace DMX2 this.table1.RowSpacing = ((uint)(6)); this.table1.ColumnSpacing = ((uint)(6)); // Container child table1.Gtk.Table+TableChild - this.combobox1 = global::Gtk.ComboBox.NewText (); - this.combobox1.Name = "combobox1"; - this.table1.Add (this.combobox1); - global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.combobox1])); + this.cbUnivers = global::Gtk.ComboBox.NewText (); + this.cbUnivers.Name = "cbUnivers"; + this.table1.Add (this.cbUnivers); + global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers])); w2.TopAttach = ((uint)(1)); w2.BottomAttach = ((uint)(2)); w2.LeftAttach = ((uint)(1)); @@ -68,7 +68,7 @@ namespace DMX2 // Container child table1.Gtk.Table+TableChild this.lblEtat = new global::Gtk.Label (); this.lblEtat.Name = "lblEtat"; - this.lblEtat.LabelProp = "label6"; + this.lblEtat.LabelProp = "Univer associé"; this.table1.Add (this.lblEtat); global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.lblEtat])); w5.LeftAttach = ((uint)(1)); diff --git a/DMX-2.0/gtk-gui/DMX2.DriverBoitierV2UI.cs b/DMX-2.0/gtk-gui/DMX2.DriverBoitierV2UI.cs new file mode 100644 index 0000000..5ea537a --- /dev/null +++ b/DMX-2.0/gtk-gui/DMX2.DriverBoitierV2UI.cs @@ -0,0 +1,218 @@ + +// This file has been generated by the GUI designer. Do not modify. +namespace DMX2 +{ + public partial class DriverBoitierV2UI + { + private global::Gtk.VBox vbox2; + private global::Gtk.Label label1; + private global::Gtk.Table table1; + private global::Gtk.ComboBox cbUnivers1; + private global::Gtk.ComboBox cbUnivers2; + private global::Gtk.Entry entry1; + private global::Gtk.Entry entry2; + private global::Gtk.Entry entry3; + private global::Gtk.Entry entry4; + private global::Gtk.Label label2; + private global::Gtk.Label label3; + private global::Gtk.Label label4; + private global::Gtk.Label label5; + private global::Gtk.Label label6; + private global::Gtk.Label label7; + private global::Gtk.HBox hbox1; + private global::Gtk.Button button120; + + protected virtual void Build () + { + global::Stetic.Gui.Initialize (this); + // Widget DMX2.DriverBoitierV2UI + global::Stetic.BinContainer.Attach (this); + this.Name = "DMX2.DriverBoitierV2UI"; + // Container child DMX2.DriverBoitierV2UI.Gtk.Container+ContainerChild + this.vbox2 = new global::Gtk.VBox (); + this.vbox2.Name = "vbox2"; + this.vbox2.Spacing = 6; + // Container child vbox2.Gtk.Box+BoxChild + this.label1 = new global::Gtk.Label (); + this.label1.Name = "label1"; + this.label1.LabelProp = "Driver V2"; + this.vbox2.Add (this.label1); + global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label1])); + w1.Position = 0; + w1.Expand = false; + w1.Fill = false; + // Container child vbox2.Gtk.Box+BoxChild + this.table1 = new global::Gtk.Table (((uint)(3)), ((uint)(4)), false); + this.table1.Name = "table1"; + this.table1.RowSpacing = ((uint)(6)); + this.table1.ColumnSpacing = ((uint)(6)); + // Container child table1.Gtk.Table+TableChild + this.cbUnivers1 = global::Gtk.ComboBox.NewText (); + this.cbUnivers1.Name = "cbUnivers1"; + this.table1.Add (this.cbUnivers1); + global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers1])); + w2.TopAttach = ((uint)(1)); + w2.BottomAttach = ((uint)(2)); + w2.LeftAttach = ((uint)(1)); + w2.RightAttach = ((uint)(2)); + w2.XOptions = ((global::Gtk.AttachOptions)(4)); + w2.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.cbUnivers2 = global::Gtk.ComboBox.NewText (); + this.cbUnivers2.Name = "cbUnivers2"; + this.table1.Add (this.cbUnivers2); + global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 [this.cbUnivers2])); + w3.TopAttach = ((uint)(2)); + w3.BottomAttach = ((uint)(3)); + w3.LeftAttach = ((uint)(1)); + w3.RightAttach = ((uint)(2)); + w3.XOptions = ((global::Gtk.AttachOptions)(4)); + w3.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.entry1 = new global::Gtk.Entry (); + this.entry1.CanFocus = true; + this.entry1.Name = "entry1"; + this.entry1.IsEditable = true; + this.entry1.InvisibleChar = '•'; + this.table1.Add (this.entry1); + global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry1])); + w4.TopAttach = ((uint)(1)); + w4.BottomAttach = ((uint)(2)); + w4.LeftAttach = ((uint)(2)); + w4.RightAttach = ((uint)(3)); + w4.XOptions = ((global::Gtk.AttachOptions)(4)); + w4.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.entry2 = new global::Gtk.Entry (); + this.entry2.CanFocus = true; + this.entry2.Name = "entry2"; + this.entry2.IsEditable = true; + this.entry2.InvisibleChar = '•'; + this.table1.Add (this.entry2); + global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry2])); + w5.TopAttach = ((uint)(1)); + w5.BottomAttach = ((uint)(2)); + w5.LeftAttach = ((uint)(3)); + w5.RightAttach = ((uint)(4)); + w5.XOptions = ((global::Gtk.AttachOptions)(4)); + w5.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.entry3 = new global::Gtk.Entry (); + this.entry3.CanFocus = true; + this.entry3.Name = "entry3"; + this.entry3.IsEditable = true; + this.entry3.InvisibleChar = '•'; + this.table1.Add (this.entry3); + global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry3])); + w6.TopAttach = ((uint)(2)); + w6.BottomAttach = ((uint)(3)); + w6.LeftAttach = ((uint)(2)); + w6.RightAttach = ((uint)(3)); + w6.XOptions = ((global::Gtk.AttachOptions)(4)); + w6.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.entry4 = new global::Gtk.Entry (); + this.entry4.CanFocus = true; + this.entry4.Name = "entry4"; + this.entry4.IsEditable = true; + this.entry4.InvisibleChar = '•'; + this.table1.Add (this.entry4); + global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1 [this.entry4])); + w7.TopAttach = ((uint)(2)); + w7.BottomAttach = ((uint)(3)); + w7.LeftAttach = ((uint)(3)); + w7.RightAttach = ((uint)(4)); + w7.XOptions = ((global::Gtk.AttachOptions)(4)); + w7.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.label2 = new global::Gtk.Label (); + this.label2.Name = "label2"; + this.label2.LabelProp = "Etat"; + this.table1.Add (this.label2); + global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table1 [this.label2])); + w8.XOptions = ((global::Gtk.AttachOptions)(4)); + w8.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.label3 = new global::Gtk.Label (); + this.label3.Name = "label3"; + this.label3.LabelProp = "Univer associé"; + this.table1.Add (this.label3); + global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table1 [this.label3])); + w9.LeftAttach = ((uint)(1)); + w9.RightAttach = ((uint)(2)); + w9.XOptions = ((global::Gtk.AttachOptions)(4)); + w9.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.label4 = new global::Gtk.Label (); + this.label4.Name = "label4"; + this.label4.LabelProp = "Break"; + this.table1.Add (this.label4); + global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table1 [this.label4])); + w10.LeftAttach = ((uint)(2)); + w10.RightAttach = ((uint)(3)); + w10.XOptions = ((global::Gtk.AttachOptions)(4)); + w10.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.label5 = new global::Gtk.Label (); + this.label5.Name = "label5"; + this.label5.LabelProp = "MAB"; + this.table1.Add (this.label5); + global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1 [this.label5])); + w11.LeftAttach = ((uint)(3)); + w11.RightAttach = ((uint)(4)); + w11.XOptions = ((global::Gtk.AttachOptions)(4)); + w11.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.label6 = new global::Gtk.Label (); + this.label6.Name = "label6"; + this.label6.LabelProp = "Block 1"; + this.table1.Add (this.label6); + global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1 [this.label6])); + w12.TopAttach = ((uint)(1)); + w12.BottomAttach = ((uint)(2)); + w12.XOptions = ((global::Gtk.AttachOptions)(4)); + w12.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table1.Gtk.Table+TableChild + this.label7 = new global::Gtk.Label (); + this.label7.Name = "label7"; + this.label7.LabelProp = "Block 2"; + this.table1.Add (this.label7); + global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1 [this.label7])); + w13.TopAttach = ((uint)(2)); + w13.BottomAttach = ((uint)(3)); + w13.XOptions = ((global::Gtk.AttachOptions)(4)); + w13.YOptions = ((global::Gtk.AttachOptions)(4)); + this.vbox2.Add (this.table1); + global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1])); + w14.Position = 1; + w14.Expand = false; + w14.Fill = false; + // Container child vbox2.Gtk.Box+BoxChild + this.hbox1 = new global::Gtk.HBox (); + this.hbox1.Name = "hbox1"; + this.hbox1.Spacing = 6; + // Container child hbox1.Gtk.Box+BoxChild + this.button120 = new global::Gtk.Button (); + this.button120.CanFocus = true; + this.button120.Name = "button120"; + this.button120.UseUnderline = true; + this.button120.Label = "Valider"; + this.hbox1.Add (this.button120); + global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.button120])); + w15.Position = 1; + w15.Expand = false; + w15.Fill = false; + this.vbox2.Add (this.hbox1); + global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1])); + w16.PackType = ((global::Gtk.PackType)(1)); + w16.Position = 2; + w16.Expand = false; + w16.Fill = false; + this.Add (this.vbox2); + if ((this.Child != null)) { + this.Child.ShowAll (); + } + this.Hide (); + } + } +} diff --git a/DMX-2.0/gtk-gui/gui.stetic b/DMX-2.0/gtk-gui/gui.stetic index 677a300..60493c8 100644 --- a/DMX-2.0/gtk-gui/gui.stetic +++ b/DMX-2.0/gtk-gui/gui.stetic @@ -2048,7 +2048,7 @@ au sequenceur - + True @@ -2108,7 +2108,7 @@ au sequenceur - label6 + Univer associé 1 @@ -2133,4 +2133,323 @@ au sequenceur + + + False + + + + 6 + + + + Driver V2 + + + 0 + True + False + False + + + + + + 3 + 4 + 6 + 6 + + + + True + + + + 1 + 2 + 1 + 2 + True + Fill + Fill + False + True + False + False + True + False + + + + + + True + + + + 2 + 3 + 1 + 2 + True + Fill + Fill + False + True + False + False + True + False + + + + + + True + True + + + + 1 + 2 + 2 + 3 + True + Fill + Fill + False + True + False + False + True + False + + + + + + True + True + + + + 1 + 2 + 3 + 4 + True + Fill + Fill + False + True + False + False + True + False + + + + + + True + True + + + + 2 + 3 + 2 + 3 + True + Fill + Fill + False + True + False + False + True + False + + + + + + True + True + + + + 2 + 3 + 3 + 4 + True + Fill + Fill + False + True + False + False + True + False + + + + + + Etat + + + True + Fill + Fill + False + True + False + False + True + False + + + + + + Univer associé + + + 1 + 2 + True + Fill + Fill + False + True + False + False + True + False + + + + + + Break + + + 2 + 3 + True + Fill + Fill + False + True + False + False + True + False + + + + + + MAB + + + 3 + 4 + True + Fill + Fill + False + True + False + False + True + False + + + + + + Block 1 + + + 1 + 2 + True + Fill + Fill + False + True + False + False + True + False + + + + + + Block 2 + + + 2 + 3 + True + Fill + Fill + False + True + False + False + True + False + + + + + 1 + True + False + False + + + + + + 6 + + + + + + + True + TextOnly + Valider + True + + + 1 + True + False + False + + + + + + + + End + 2 + True + False + False + + + + + \ No newline at end of file