diff --git a/DMX-2.0/Conduite.cs b/DMX-2.0/Conduite.cs index b73abd8..1fa23c8 100644 --- a/DMX-2.0/Conduite.cs +++ b/DMX-2.0/Conduite.cs @@ -74,7 +74,7 @@ namespace DMX2 // Démarrage du thread tickThread = new Thread (new ThreadStart (ThreadLoop)); tickThread.Start (); - derniereMaj = dernierTick = DateTime.Now; + } public EventManager EventManager { @@ -195,7 +195,7 @@ namespace DMX2 { Thread.CurrentThread.Priority = ThreadPriority.AboveNormal; DateTime next; - + dernierTick = DateTime.Now; while (running) { try{ diff --git a/DMX-2.0/DriverBoitierV2.cs b/DMX-2.0/DriverBoitierV2.cs index 1818856..eb718b9 100644 --- a/DMX-2.0/DriverBoitierV2.cs +++ b/DMX-2.0/DriverBoitierV2.cs @@ -46,6 +46,7 @@ namespace DMX2 portname = serialport; outputbuffer[0]=27; outputbuffer[1]=68; + Start(); } @@ -59,20 +60,26 @@ namespace DMX2 void Connection () { + Console.WriteLine ("DriverV2.Connection()"); if (serial != null) { - serial.Close(); - serial.Dispose(); + serial.Close (); + serial.Dispose (); } - serial = new SerialPort(portname, 460800,Parity.None,8,StopBits.One); - serial.DtrEnable = false; - serial.ReadTimeout = 15; + serial = new SerialPort (portname, 460800, Parity.None, 8, StopBits.One); + //serial.DtrEnable = false; + serial.ReadTimeout = 200; serial.WriteTimeout = 200; - serial.Open(); - etat = etatAutomate.Transmission; + try { + serial.Open (); + etat = etatAutomate.Transmission; + } catch { + etat = etatAutomate.Deconnecte; + } } volatile etatAutomate etat = etatAutomate.Deconnecte; DateTime finAttente = DateTime.Now; + int compteErreur = 0; void MainLoop() { @@ -81,7 +88,9 @@ namespace DMX2 switch (etat) { case etatAutomate.Deconnecte: Connection(); - Attente(DateTime.Now.AddMilliseconds(200)); + compteErreur= 0; + Attente(DateTime.Now.AddMilliseconds(1000)); + serial.DiscardInBuffer(); break; case etatAutomate.Transmission: finAttente = DateTime.Now.AddMilliseconds (22); @@ -90,8 +99,15 @@ namespace DMX2 Attente(finAttente); break; case etatAutomate.Erreur: - Deconnecte(); - Attente(DateTime.Now.AddSeconds(2)); + compteErreur ++; + if(compteErreur>3){ + Deconnecte(); + Attente(DateTime.Now.AddSeconds(2)); + } + else { + Attente(DateTime.Now.AddSeconds(1)); + etat = etatAutomate.Transmission; + } break; // case etatAutomate.Parametrage: // EnvoiParam(); @@ -115,6 +131,7 @@ namespace DMX2 void Deconnecte () { + Console.WriteLine("DriverV2.Deconnection"); etat = etatAutomate.Deconnecte; if(serial == null) return; @@ -129,11 +146,12 @@ namespace DMX2 etat = etatAutomate.Erreur; } - if(patch1!=null) patch1.CalculUnivers(outputbuffer,3,512); + if(patch1!=null) patch1.CalculUnivers(outputbuffer,2,512); serial.Write(outputbuffer,0,outputbuffer.Length); - } catch (TimeoutException ex) { + } catch (Exception ex) { + Console.WriteLine("Exception Envoi {0}",ex); etat = etatAutomate.Erreur; } } @@ -158,9 +176,12 @@ namespace DMX2 } serial.Read(inputbuffer,0,inputbuffer.Length); - ProcessInput(); - - } catch (TimeoutException ex) { + //ProcessInput(); + //Console.WriteLine(inputbuffer[0]); + compteErreur= 0; + } catch (Exception ex) { + Console.WriteLine(serial.BytesToRead); + Console.WriteLine("Exception Reception {0}",ex); etat = etatAutomate.Erreur; } } diff --git a/DMX-2.0/EditionUnivers.cs b/DMX-2.0/EditionUnivers.cs index 4209128..ff3bcf9 100644 --- a/DMX-2.0/EditionUnivers.cs +++ b/DMX-2.0/EditionUnivers.cs @@ -35,7 +35,12 @@ namespace DMX2 TreeIter iter; lsCbUnivers.GetIterFirst(out iter); cbUnivers.SetActiveIter(iter); + this.Destroyed += HandleDestroyed; + } + void HandleDestroyed (object sender, EventArgs e) + { + universEdite.AllumageForce[currDimm] = false; } void RenderUniversName (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter) @@ -223,6 +228,9 @@ namespace DMX2 majencour = true; int id = (int)(spinDimmer.Value); + universEdite.AllumageForce[currDimm] = false; + btAllume.Active = false; + currDimm = id - 1; tvDimm.SetCursor( new TreePath( new int[1] { currDimm }) ,null,false); @@ -406,7 +414,15 @@ namespace DMX2 universEdite.Dimmers[i].param1 = 100; } MajListeDimmer(); + } + + protected void OnBtAllumeClicked (object sender, EventArgs e) + { + if (majencour) + return; + universEdite.AllumageForce[currDimm] = btAllume.Active; } + } } diff --git a/DMX-2.0/GestionDriversUI.cs b/DMX-2.0/GestionDriversUI.cs index 9f5b4cd..7ad49b7 100644 --- a/DMX-2.0/GestionDriversUI.cs +++ b/DMX-2.0/GestionDriversUI.cs @@ -105,19 +105,23 @@ namespace DMX2 if (fi == null) return; - DriverDMX drv = Conduite.Courante.GetDriverByID (fi.Name); + drv = Conduite.Courante.GetDriverByID (fi.Name); if (drv == null) { btnConnect.Visible = btnConnect.Sensitive = true; btnDisconnect.Visible = btnDisconnect.Sensitive = false; comboDriver.Sensitive = true; comboDriver.Active=-1; + if(frmDrvChild.Child!=null) + frmDrvChild.Remove(frmDrvChild.Child); return; } - AfficheDriverUI(drv); + AfficheDriverUI(); } + + DriverDMX drv=null; protected void OnBtnConnectClicked (object sender, EventArgs e) { // Instancie @@ -132,7 +136,7 @@ namespace DMX2 if (fi == null) return; - DriverDMX drv=null; + drv=null; switch (comboDriver.Active) { case 0: @@ -147,16 +151,20 @@ namespace DMX2 return; } - AfficheDriverUI(drv); + AfficheDriverUI(); } protected void OnBtnDisConnectClicked (object sender, EventArgs e) { - //Dispose; + if (drv != null) { + drv.Dispose (); + Conduite.Courante.Drivers.Remove (drv); + } + } - void AfficheDriverUI(DriverDMX drv){ + void AfficheDriverUI(){ btnConnect.Visible = false; comboDriver.Sensitive = false; @@ -166,6 +174,15 @@ namespace DMX2 frmDrvChild.ShowAll(); } + + void EffaceDriverUI(){ + btnConnect.Visible = true; + comboDriver.Sensitive = true; + + btnDisconnect.Visible = btnDisconnect.Sensitive = false; + + + } } } diff --git a/DMX-2.0/gtk-gui/DMX2.EditionUnivers.cs b/DMX-2.0/gtk-gui/DMX2.EditionUnivers.cs index da56e52..c0f319f 100644 --- a/DMX-2.0/gtk-gui/DMX2.EditionUnivers.cs +++ b/DMX-2.0/gtk-gui/DMX2.EditionUnivers.cs @@ -376,6 +376,7 @@ namespace DMX2 this.btAdd.Clicked += new global::System.EventHandler (this.OnBtAddClicked); this.btPatchDroit.Clicked += new global::System.EventHandler (this.OnBtPatchDroitClicked); this.btReset.Clicked += new global::System.EventHandler (this.OnBtResetClicked); + this.btAllume.Clicked += new global::System.EventHandler (this.OnBtAllumeClicked); this.spinDimmer.ValueChanged += new global::System.EventHandler (this.OnSpinDimmerValueChanged); this.cbCircuit.Changed += new global::System.EventHandler (this.OnCbCircuitChanged); this.cbFT.Changed += new global::System.EventHandler (this.OnCbFTChanged); diff --git a/DMX-2.0/gtk-gui/gui.stetic b/DMX-2.0/gtk-gui/gui.stetic index 2bb68d6..095aa0f 100644 --- a/DMX-2.0/gtk-gui/gui.stetic +++ b/DMX-2.0/gtk-gui/gui.stetic @@ -1366,6 +1366,7 @@ au sequenceur stock:gtk-find Menu Allumer ! True + 0