From e20ca3ba2721b9fc9887c635a38d379db2e6fd42 Mon Sep 17 00:00:00 2001 From: tzim Date: Tue, 13 May 2014 11:59:12 +0000 Subject: [PATCH] --- DMX-2.0/DriverBoitierV3.cs | 12 ++++++------ dmx512_micro/dmx512_micro.cpp | 25 +++++++++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/DMX-2.0/DriverBoitierV3.cs b/DMX-2.0/DriverBoitierV3.cs index 929bb07..8e7df94 100644 --- a/DMX-2.0/DriverBoitierV3.cs +++ b/DMX-2.0/DriverBoitierV3.cs @@ -45,7 +45,7 @@ namespace DMX2 const int timeout = 500; // tampons Entrée/Sortie - public byte[] inputbuffer = new byte[516]; + public byte[] inputbuffer = new byte[517]; byte[] outputbuffer = new byte[514]; //Thread de boucle @@ -381,8 +381,8 @@ namespace DMX2 } serial.Read(inputbuffer,0,inputbuffer.Length); - if (flag_input != inputbuffer[0]) { - flag_input = inputbuffer[0]; + if (flag_input != inputbuffer[512]) { + flag_input = inputbuffer[512]; Console.WriteLine(flag_input ); } if(serial.BytesToRead>0) @@ -465,9 +465,9 @@ namespace DMX2 { lock(watchdmx) foreach (int dmx in watchdmx) { - if( inputbuffer[dmx-1]!= lastVal[dmx]){ - lastVal[dmx] = inputbuffer[dmx-1]; - eventsPending.Enqueue(new dmxState(dmx,inputbuffer[dmx-1])); + if( inputbuffer[dmx]!= lastVal[dmx]){ + lastVal[dmx] = inputbuffer[dmx]; + eventsPending.Enqueue(new dmxState(dmx,inputbuffer[dmx])); } } } diff --git a/dmx512_micro/dmx512_micro.cpp b/dmx512_micro/dmx512_micro.cpp index 0cad78d..e80c36f 100644 --- a/dmx512_micro/dmx512_micro.cpp +++ b/dmx512_micro/dmx512_micro.cpp @@ -77,7 +77,11 @@ void CDC_accept() case IINUSB_IDLE: USB_Recv(CDC_RX,&c,1); // on attend un 'esc' pour commencer - if (c==27) { etat_input_pc=IINUSB_ESC; break;} + if (c==27) { + etat_input_pc=IINUSB_ESC; + RXLED1; rxledcpt=RX_TX_LED_TIME; + break; + } break; case IINUSB_ESC: @@ -87,7 +91,7 @@ void CDC_accept() etat_input_pc=IINUSB_DATA; index_input_pc=1; tab_input_dmx[517]=68; - index_output_pc=1; // on init l'index d'emmission vers le pc ( le 0 n'est pas emit => start code) + index_output_pc=0; // on init l'index d'emmission vers le pc emissionPc=1; break; } @@ -162,7 +166,6 @@ void CDC_accept() void ecritUSB() { - TXLED1; txledcpt=RX_TX_LED_TIME; if(index_output_pc > 516){ // Emission d'un seul caractere (code etat) USB_Send(CDC_TX,tab_input_dmx+index_output_pc,1); emissionPc=0; @@ -190,7 +193,7 @@ ISR(USART1_RX_vect) if (r & (1< doit etre 0 + if ( index_input_dmx==0 && c!=0 ) {index_input_dmx=513; } // Start code => doit etre 0 if ( index_input_dmx on copie ce qu'on a déja recu for(int i=0;i