vasko ozo
/
TxRxService
20190816
Diff: main.cpp
- 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 } }