programme de test pour envoyer du DUJ4 vers processing

Dependencies:   mbed

Revision:
0:84f30b3eb83b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serie.h	Thu Jan 14 10:01:51 2021 +0000
@@ -0,0 +1,150 @@
+// DUJ4 en  version limitée 
+// en emission D comme  Départ
+// 2 variables 16bits         DK et DL  
+// 3 tableaux de 100 12bits   tabDR  , tabDS  , tabDT
+// ordres en emission .. a vous de jouer avec un  pc.putc('f');  ordre 'f'
+// en Reception A comme Arrivée 
+// 3 variables  16 bits       AK et AL 
+// 3 tableaux de 100 12 bits  tabAR  , tabAS  , tabAT 
+// ordres en reception .. a vous de jouer au debut de void interrup ... 
+
+// VARIABLES 
+// variables pde reception et de décodage propres à  DUJ4 pas au main 
+int hex3 ='1' ; int hex2 = 0 ; int hex1 = 0 ; int hex0 = 0;
+int val3 =0 ; int val2=0   ;int val1 = 0; int val0 = 0; int res=0;
+int val = 0;                    // lieu de  passage des char arrivés en port com
+int point = 0;                  // pointeur dans le tableau des char arrivés
+int rec[10];                    // tableau des char en arrivée pure
+int ou ; int quoi ;             // ou et quoi dans les tableaux tabAX[]
+int tempo = 0;
+//nom des tableaux servant de tampons  de décodage en arrivée  
+int tabAH[101] ;int tabAI[101] ; int tabAJ[101] ;  
+
+// nom des variables 16 bits en Depart utilisables dans le main 
+int DK = 1000 ; int DL = 5000;  // depart
+int AK = 0    ; int AL = 0;     // arrivée                    
+// nom des tableaux de variables UTILISABLES dans le main  
+int tabDR[101] ; int tabDS[101] ; int tabDT[101] ;// en Depart            
+int tabAR[101] ; int tabAS[101] ; int tabAT[101] ;// en Arrivée
+  
+//SOUS PROGRAMMES       
+int HEXit ( int valc )
+        {// traduction d'une valeur 0 à 15 en Ascii  O à F
+        int  asc; 
+        if ( valc > 16 ) valc = 16 ; if  (valc < 1 ) valc = 0 ; 
+        if  ( valc == 0 ) asc = '0'; if  ( valc == 1 ) asc = '1';
+        if  ( valc == 2 ) asc = '2'; if  ( valc == 3 ) asc = '3';
+        if  ( valc == 4 ) asc = '4'; if  ( valc == 5 ) asc = '5';
+        if  ( valc == 6 ) asc = '6'; if  ( valc == 7 ) asc = '7';
+        if  ( valc == 8 ) asc = '8'; if  ( valc == 9 ) asc = '9';
+        if  ( valc == 10) asc = 'A'; if  ( valc == 11) asc = 'B';
+        if  ( valc == 12) asc = 'C'; if  ( valc == 13) asc = 'D';
+        if  ( valc == 14) asc = 'E'; if  ( valc == 15) asc = 'F';
+        return asc;
+        } 
+        
+void INTtoHEX( int valI)  // calcul les 4 valeurs en hexa  d'un INT 
+       {
+        val3 =valI/4096                           ;hex3 = HEXit( val3) ;
+        valI =valI - 4096*val3 ; val2 = valI/256  ;hex2 = HEXit( val2) ;
+        valI =valI - val2*256  ; val1 = valI/16   ;hex1 = HEXit( val1) ;
+        valI =valI - val1*16   ; val0 = valI      ;hex0 = HEXit( val0) ;      
+       }      
+                          
+void THextabDR( int nb )  // transfert tableau de 12bits DR
+       {
+        for (int pt = 0 ; pt < nb ; pt++)  
+            {  
+            int can = tabDR[pt] * 4; //passe a 4096
+            INTtoHEX(can);
+            pc.putc(hex2);  pc.putc(hex1);  pc.putc(hex0); 
+            pc.putc('H');       
+            }
+        wait_ms(10);    
+        pc.putc('R');   // 
+        wait_ms(10);  
+       }
+       
+void THextabDS( int nb )// transfert en 12 bits DS
+       {
+        for (int pt = 0 ; pt < nb ; pt++)  
+            {  
+            int can = tabDS[pt] * 4 ; // passe à 4096
+            INTtoHEX(can);
+            pc.putc(hex2);  pc.putc(hex1);  pc.putc(hex0); 
+            pc.putc('I');       
+            }
+        wait_ms(10);    
+        pc.putc('S');   // 
+        wait_ms(10);  
+       }
+       
+void THextabDT( int nb )// transfert en 12 bits DT
+       {
+        for (int pt = 0 ; pt < nb ; pt++)  
+            {  
+            int can = tabDT[pt] ;
+            INTtoHEX(can);
+            pc.putc(hex2);  pc.putc(hex1);  pc.putc(hex0); 
+            pc.putc('J');       
+            }
+        wait_ms(10);    
+        pc.putc('T');   // 
+        wait_ms(10);  
+       }
+       
+void sendDK ( )// envoie DK en 16 bits  hexa
+        {
+        INTtoHEX(DK);
+        pc.putc(hex3);  pc.putc(hex2);  pc.putc(hex1);  pc.putc(hex0); 
+        pc.putc('K');     
+        }   
+void sendDL( )//  envoie DL en 16 bits
+        {
+        INTtoHEX(DL);
+        pc.putc(hex3);  pc.putc(hex2);  pc.putc(hex1);  pc.putc(hex0); 
+        pc.putc('L');     
+        }  
+            
+int  readval12()  // traduc en 12 bits des 3 hexa arrivés
+     {int cal;
+      cal = 256*rec[0]+ 16 *rec[1]+  rec[2]; 
+      return cal; }
+int  readval16()  // traduc en 16 bits des 4 hexa arrivés
+     {int cal;
+      cal = 4096*rec[0]+ 256*rec[1]+ 16 *rec[2]+  rec[3]; 
+      return cal; }
+      
+// COEUR du PROCESSUS DE RECEPTION 
+void interrupt()   //  chaque carractère reçut ce programme est appelé
+{ val = pc.getc(); //  sauvegarder  le  dernier carractère arrivé 
+  // on a 100 µS pour faire la suite 
+  // detection ordres et actions prevues ( sans delai) 
+  if ( val == 'f' ) {led= !led; }
+  if ( val == 'g' ) {flag = 1;    } //*******test duj4
+
+  //if ( val == 'z')  { ; }  
+  // reception de l'héxa et placement dans le  tableau intermediaire rec[]
+  if ( val == '0'){rec[point]=0 ; point++;} if(val=='1'){rec[point]=1;point++;} 
+  if ( val == '2'){rec[point]=2 ; point++;} if(val=='3'){rec[point]=3;point++;} 
+  if ( val == '4'){rec[point]=4 ; point++;} if(val=='5'){rec[point]=5;point++;} 
+  if ( val == '6'){rec[point]=6 ; point++;} if(val=='7'){rec[point]=7;point++;} 
+  if ( val == '8'){rec[point]=8 ; point++;} if(val=='9'){rec[point]=9;point++;} 
+  if ( val == 'A'){rec[point]=10; point++;} if(val=='B'){rec[point]=11;point++;} 
+  if ( val == 'C'){rec[point]=12; point++;} if(val=='D'){rec[point]=13;point++;} 
+  if ( val == 'E'){rec[point]=14; point++;} if(val=='F'){rec[point]=15;point++;} 
+  if ( point > 8 ) point = 8; 
+  // detection des transferts de datas  ..  
+  if ( val == 'H') { tabAH[ou]= readval12(); point = 0 ; ou++;} //empilage tampon 
+  if ( val == 'I') { tabAI[ou]= readval12(); point = 0 ; ou++;} //empilage 
+  if ( val == 'J') { tabAJ[ou]= readval12(); point = 0 ; ou++;} //empilage 
+  if ( val == 'K') { AK= readval16(); point = 0 ; }  // // AK
+  if ( val == 'L') { AL= readval16(); point = 0 ; }  // 
+  // ASCII libres  // 
+  if ( val == 'R') { for(int i=0; i<100; i++)tabAR[i]=tabAH[i];ou=0;} // util
+  if ( val == 'S') { for(int i=0; i<100; i++)tabAS[i]=tabAI[i];ou=0;} // 
+  if ( val == 'T') { for(int i=0; i<100; i++)tabAT[i]=tabAJ[i];ou=0;} // >AT
+  // ASCII libres
+ 
+  }
+  
\ No newline at end of file