This commit is contained in:
tzim 2014-05-13 11:59:12 +00:00
parent a4c102d20b
commit e20ca3ba27
2 changed files with 23 additions and 14 deletions

View file

@ -45,7 +45,7 @@ namespace DMX2
const int timeout = 500; const int timeout = 500;
// tampons Entrée/Sortie // tampons Entrée/Sortie
public byte[] inputbuffer = new byte[516]; public byte[] inputbuffer = new byte[517];
byte[] outputbuffer = new byte[514]; byte[] outputbuffer = new byte[514];
//Thread de boucle //Thread de boucle
@ -381,8 +381,8 @@ namespace DMX2
} }
serial.Read(inputbuffer,0,inputbuffer.Length); serial.Read(inputbuffer,0,inputbuffer.Length);
if (flag_input != inputbuffer[0]) { if (flag_input != inputbuffer[512]) {
flag_input = inputbuffer[0]; flag_input = inputbuffer[512];
Console.WriteLine(flag_input ); Console.WriteLine(flag_input );
} }
if(serial.BytesToRead>0) if(serial.BytesToRead>0)
@ -465,9 +465,9 @@ namespace DMX2
{ {
lock(watchdmx) lock(watchdmx)
foreach (int dmx in watchdmx) { foreach (int dmx in watchdmx) {
if( inputbuffer[dmx-1]!= lastVal[dmx]){ if( inputbuffer[dmx]!= lastVal[dmx]){
lastVal[dmx] = inputbuffer[dmx-1]; lastVal[dmx] = inputbuffer[dmx];
eventsPending.Enqueue(new dmxState(dmx,inputbuffer[dmx-1])); eventsPending.Enqueue(new dmxState(dmx,inputbuffer[dmx]));
} }
} }
} }

View file

@ -77,7 +77,11 @@ void CDC_accept()
case IINUSB_IDLE: case IINUSB_IDLE:
USB_Recv(CDC_RX,&c,1); USB_Recv(CDC_RX,&c,1);
// on attend un 'esc' pour commencer // 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; break;
case IINUSB_ESC: case IINUSB_ESC:
@ -87,7 +91,7 @@ void CDC_accept()
etat_input_pc=IINUSB_DATA; etat_input_pc=IINUSB_DATA;
index_input_pc=1; index_input_pc=1;
tab_input_dmx[517]=68; 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; emissionPc=1;
break; break;
} }
@ -162,7 +166,6 @@ void CDC_accept()
void ecritUSB() void ecritUSB()
{ {
TXLED1; txledcpt=RX_TX_LED_TIME;
if(index_output_pc > 516){ // Emission d'un seul caractere (code etat) if(index_output_pc > 516){ // Emission d'un seul caractere (code etat)
USB_Send(CDC_TX,tab_input_dmx+index_output_pc,1); USB_Send(CDC_TX,tab_input_dmx+index_output_pc,1);
emissionPc=0; emissionPc=0;
@ -202,6 +205,7 @@ ISR(USART1_RX_vect)
for(int i=0;i<TEMPDMXRX;i++) for(int i=0;i<TEMPDMXRX;i++)
tab_input_dmx[i]=tab_temp_dmx[i]; tab_input_dmx[i]=tab_temp_dmx[i];
RXLED1; rxledcpt=RX_TX_LED_TIME; RXLED1; rxledcpt=RX_TX_LED_TIME;
tab_input_dmx[513]=0;
} }
if ( index_input_dmx<=512 ) if ( index_input_dmx<=512 )
@ -259,7 +263,7 @@ ISR(TIMER4_COMPA_vect) {
return; return;
} }
if (index_output_dmx==IOUTDMX_MAB ) { // en cours de mab if (index_output_dmx==IOUTDMX_MAB ) { // en cours de mab
//TXLED1; txledcpt=RX_TX_LED_TIME; TXLED1; txledcpt=RX_TX_LED_TIME;
sbi(UCSR1B, TXEN1); // on reactive la transmission USART sbi(UCSR1B, TXEN1); // on reactive la transmission USART
index_output_dmx=0; // on se prépare à émmettre à partir du stat code ( 513 octets ) index_output_dmx=0; // on se prépare à émmettre à partir du stat code ( 513 octets )
sbi(UCSR1B, UDRIE1); // on réactive l'intéruption du registre sbi(UCSR1B, UDRIE1); // on réactive l'intéruption du registre
@ -355,8 +359,13 @@ void loop() {
int m = millis(); int m = millis();
if (m-blkl) { // Toutes les ms if (m-blkl) { // Toutes les ms
interbrk+=(m-blkl) ; int ival = (m-blkl) ;
blkcpt++; blkl = m; interbrk+=ival ;
blkcpt+=ival ;
if(tab_input_dmx[513]<200) tab_input_dmx[513]+=ival ; // "age" de la trame recue
blkl = m;
if(rxledcpt) rxledcpt--; if(rxledcpt) rxledcpt--;
else RXLED0; else RXLED0;
if(txledcpt) txledcpt--; if(txledcpt) txledcpt--;