20190816

Dependencies:   mbed

Revision:
2:56a194afd255
Parent:
1:e5810b8734ec
Child:
3:7cdb20aac969
--- a/main.cpp	Fri Aug 02 18:32:47 2019 +0000
+++ b/main.cpp	Fri Aug 02 20:20:18 2019 +0000
@@ -3,19 +3,15 @@
 #define ArrTxSize 16
 #define ArrRxSize 16
 
-#define LeadingEcho 1 //определить "1" для превращения программы 
-                              //в эхо  + вывод массива  
-#define RxInterruptEnable 1 //определить "0" для отслеживания приянятия символа поллингом
+Serial pc(USBTX,USBRX);
 
-//отправка массива по приему  символа
-Serial pc(USBTX,USBRX);
-//uint8_t a = pc.getc();
 DigitalOut myled(LED1);
 
 int nCharTx = 0;
+int nCharRx = 0;
 
-uint8_t ArrTx[ArrTxSize] = {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4b,0x4c,0x4d,0x4e,0x20};
-uint8_t ArrRx[ArrRxSize];
+uint8_t ArrTx[ArrTxSize] = {0x20,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4b,0x4c,0x4d,0x4e,0x4f};
+uint8_t ArrRx[ArrRxSize] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
     
 void IntrTx() {
     nCharTx++;
@@ -23,57 +19,33 @@
     pc.putc(ArrTx[nCharTx]);
     }
     else{
-         pc.attach(NULL, Serial::TxIrq);
+        pc.attach(NULL, Serial::TxIrq);
+        myled=0;  
         }
     }
 
-void IntrRx() { 
-    
-#ifdef LeadingEcho
-#if LeadingEcho == 1  
-    uint8_t received_char;
-    received_char = pc.getc();
-    pc.putc(received_char);   //раскомментировать эту строку для превращения программы 
-                              //в эхо  + вывод массива  
-    nCharTx = -1;             //установить в -1 для превращения программы
-                              //в эхо  + вывод массива  
-#elif LeadingEcho == 0
-    (void) pc.getc();
-    nCharTx = 0;             //установить в -1 для превращения программы
-                              //в эхо  + вывод массива  
-    pc.putc(ArrTx[nCharTx]);//закомментировать эту строку для превращения программы  
-                              //в эхо  + вывод массива  (стилистически правльно)
-#endif                              
-#else
-  #error LeadingEcho not defined !!!!!!!
-#endif                             
-    pc.attach(&IntrTx, Serial::TxIrq);
+void IntrRx() {
+    ArrRx[nCharRx++] = pc.getc();
+    if (nCharRx >= ArrRxSize ) {
+        for(int i = 0; i < ArrTxSize; i++){
+            ArrTx[i] = ArrRx[i];
+            }
+        nCharTx = 0;
+        pc.putc(ArrTx[nCharTx]);                          
+        pc.attach(&IntrTx, Serial::TxIrq);
+        nCharRx = 0;
+        myled=1;  
+        }
     }
 
 int main() {
-#ifdef RxInterruptEnable
-#if RxInterruptEnable == 1
             pc.attach(&IntrRx, Serial::RxIrq);
-#endif                            
-#else
-  #error RxInterruptEnable not defined !!!!!!!
-#endif  
             pc.attach(NULL, Serial::TxIrq);//я УПЁРТЫЙ дебил
             
-            
-            //Я дебил,потому что хотел выполнить действия,которые требуются
-            //постоянно,один раз и именно здесь. jhkhkjh
+            //Exige Monumentum
+            //Я дебил,потому что хотел выполнить действия,которые 
+            //требуются постоянно,один раз и именно здесь.
             
     while(1) {
-#ifdef RxInterruptEnable
-#if RxInterruptEnable == 0
-        (void) pc.getc();
-        nCharTx = 0;
-        pc.putc(ArrTx[nCharTx]);
-        pc.attach(&IntrTx, Serial::TxIrq); 
-#endif                            
-#else
-  #error RxInterruptEnable not defined !!!!!!!
-#endif     
     }
 }