Oliver Ainhirn
/
11_10_2018
Klassen
main.cpp@0:436ff0be3c8f, 2019-02-04 (annotated)
- Committer:
- corsa1600
- Date:
- Mon Feb 04 17:00:11 2019 +0000
- Revision:
- 0:436ff0be3c8f
Klassen
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
corsa1600 | 0:436ff0be3c8f | 1 | #include "mbed.h" |
corsa1600 | 0:436ff0be3c8f | 2 | |
corsa1600 | 0:436ff0be3c8f | 3 | |
corsa1600 | 0:436ff0be3c8f | 4 | class SerialEvent |
corsa1600 | 0:436ff0be3c8f | 5 | { |
corsa1600 | 0:436ff0be3c8f | 6 | private: |
corsa1600 | 0:436ff0be3c8f | 7 | Serial _isr; // für serielles einlesen |
corsa1600 | 0:436ff0be3c8f | 8 | volatile int16_t _pressed; // wegen multicore unterstützung |
corsa1600 | 0:436ff0be3c8f | 9 | void _risingISR(); // prototyping |
corsa1600 | 0:436ff0be3c8f | 10 | string _str; // str ist nur eine Variable, könnte auch zeichen heißen |
corsa1600 | 0:436ff0be3c8f | 11 | |
corsa1600 | 0:436ff0be3c8f | 12 | public: |
corsa1600 | 0:436ff0be3c8f | 13 | int checkFlag(); |
corsa1600 | 0:436ff0be3c8f | 14 | void read(string& zeichen); |
corsa1600 | 0:436ff0be3c8f | 15 | |
corsa1600 | 0:436ff0be3c8f | 16 | SerialEvent(PinName tx, PinName rx): _isr(tx,rx) //Konstruktor |
corsa1600 | 0:436ff0be3c8f | 17 | { |
corsa1600 | 0:436ff0be3c8f | 18 | _isr.attach(callback(this, &SerialEvent::_risingISR)); |
corsa1600 | 0:436ff0be3c8f | 19 | } |
corsa1600 | 0:436ff0be3c8f | 20 | }; |
corsa1600 | 0:436ff0be3c8f | 21 | |
corsa1600 | 0:436ff0be3c8f | 22 | void SerialEvent :: read(string& zeichen) |
corsa1600 | 0:436ff0be3c8f | 23 | { |
corsa1600 | 0:436ff0be3c8f | 24 | zeichen= _str; |
corsa1600 | 0:436ff0be3c8f | 25 | } |
corsa1600 | 0:436ff0be3c8f | 26 | |
corsa1600 | 0:436ff0be3c8f | 27 | |
corsa1600 | 0:436ff0be3c8f | 28 | void SerialEvent :: _risingISR() |
corsa1600 | 0:436ff0be3c8f | 29 | { |
corsa1600 | 0:436ff0be3c8f | 30 | _str = _isr.getc(); |
corsa1600 | 0:436ff0be3c8f | 31 | _pressed=1; |
corsa1600 | 0:436ff0be3c8f | 32 | } |
corsa1600 | 0:436ff0be3c8f | 33 | |
corsa1600 | 0:436ff0be3c8f | 34 | int SerialEvent :: checkFlag () |
corsa1600 | 0:436ff0be3c8f | 35 | { |
corsa1600 | 0:436ff0be3c8f | 36 | if(_pressed) |
corsa1600 | 0:436ff0be3c8f | 37 | { |
corsa1600 | 0:436ff0be3c8f | 38 | _pressed=0; |
corsa1600 | 0:436ff0be3c8f | 39 | return true; |
corsa1600 | 0:436ff0be3c8f | 40 | } |
corsa1600 | 0:436ff0be3c8f | 41 | else |
corsa1600 | 0:436ff0be3c8f | 42 | return false; |
corsa1600 | 0:436ff0be3c8f | 43 | } |
corsa1600 | 0:436ff0be3c8f | 44 | |
corsa1600 | 0:436ff0be3c8f | 45 | SerialEvent pc(USBTX, USBRX); //pc ist wieder nur irgendeine Variable |
corsa1600 | 0:436ff0be3c8f | 46 | |
corsa1600 | 0:436ff0be3c8f | 47 | |
corsa1600 | 0:436ff0be3c8f | 48 | |
corsa1600 | 0:436ff0be3c8f | 49 | |
corsa1600 | 0:436ff0be3c8f | 50 | main() |
corsa1600 | 0:436ff0be3c8f | 51 | { |
corsa1600 | 0:436ff0be3c8f | 52 | |
corsa1600 | 0:436ff0be3c8f | 53 | char z; |
corsa1600 | 0:436ff0be3c8f | 54 | while(1) |
corsa1600 | 0:436ff0be3c8f | 55 | { |
corsa1600 | 0:436ff0be3c8f | 56 | if( pc.checkFlag()) |
corsa1600 | 0:436ff0be3c8f | 57 | { |
corsa1600 | 0:436ff0be3c8f | 58 | pc.read(z); |
corsa1600 | 0:436ff0be3c8f | 59 | printf("Zeichen: %c\n",z); |
corsa1600 | 0:436ff0be3c8f | 60 | } |
corsa1600 | 0:436ff0be3c8f | 61 | } |
corsa1600 | 0:436ff0be3c8f | 62 | |
corsa1600 | 0:436ff0be3c8f | 63 | } |
corsa1600 | 0:436ff0be3c8f | 64 | |
corsa1600 | 0:436ff0be3c8f | 65 | |
corsa1600 | 0:436ff0be3c8f | 66 | |
corsa1600 | 0:436ff0be3c8f | 67 | |
corsa1600 | 0:436ff0be3c8f | 68 | /* |
corsa1600 | 0:436ff0be3c8f | 69 | |
corsa1600 | 0:436ff0be3c8f | 70 | |
corsa1600 | 0:436ff0be3c8f | 71 | public: |
corsa1600 | 0:436ff0be3c8f | 72 | SerialEvent |
corsa1600 | 0:436ff0be3c8f | 73 | { |
corsa1600 | 0:436ff0be3c8f | 74 | |
corsa1600 | 0:436ff0be3c8f | 75 | } |
corsa1600 | 0:436ff0be3c8f | 76 | |
corsa1600 | 0:436ff0be3c8f | 77 | privat: |
corsa1600 | 0:436ff0be3c8f | 78 | { |
corsa1600 | 0:436ff0be3c8f | 79 | |
corsa1600 | 0:436ff0be3c8f | 80 | } |
corsa1600 | 0:436ff0be3c8f | 81 | |
corsa1600 | 0:436ff0be3c8f | 82 | }; |
corsa1600 | 0:436ff0be3c8f | 83 | // ---------------- Switch Event Class -------------------------- |
corsa1600 | 0:436ff0be3c8f | 84 | class SwEvent |
corsa1600 | 0:436ff0be3c8f | 85 | { |
corsa1600 | 0:436ff0be3c8f | 86 | InterruptIn _isr; |
corsa1600 | 0:436ff0be3c8f | 87 | volatile int16_t _pressed; |
corsa1600 | 0:436ff0be3c8f | 88 | void _risingISR(); |
corsa1600 | 0:436ff0be3c8f | 89 | |
corsa1600 | 0:436ff0be3c8f | 90 | public: |
corsa1600 | 0:436ff0be3c8f | 91 | SwEvent(PinName pin) : _isr(pin) { // create the InterruptIn on the pin specified to SwEvent |
corsa1600 | 0:436ff0be3c8f | 92 | _isr.rise(callback(this, &SwEvent::_risingISR)); // attach ISR-function of this SwEvent instance |
corsa1600 | 0:436ff0be3c8f | 93 | _pressed=0; |
corsa1600 | 0:436ff0be3c8f | 94 | } |
corsa1600 | 0:436ff0be3c8f | 95 | int checkFlag(); // must in do-condition (while(true)-loop) continuously interrogated |
corsa1600 | 0:436ff0be3c8f | 96 | void init(); |
corsa1600 | 0:436ff0be3c8f | 97 | }; |
corsa1600 | 0:436ff0be3c8f | 98 | // ---------------- Switch Event Class Methodes -------------------------- |
corsa1600 | 0:436ff0be3c8f | 99 | int SwEvent::checkFlag() |
corsa1600 | 0:436ff0be3c8f | 100 | { |
corsa1600 | 0:436ff0be3c8f | 101 | if( _pressed ) |
corsa1600 | 0:436ff0be3c8f | 102 | { |
corsa1600 | 0:436ff0be3c8f | 103 | _pressed = 0; |
corsa1600 | 0:436ff0be3c8f | 104 | return 1; |
corsa1600 | 0:436ff0be3c8f | 105 | } |
corsa1600 | 0:436ff0be3c8f | 106 | return 0; |
corsa1600 | 0:436ff0be3c8f | 107 | } |
corsa1600 | 0:436ff0be3c8f | 108 | |
corsa1600 | 0:436ff0be3c8f | 109 | void SwEvent::_risingISR() |
corsa1600 | 0:436ff0be3c8f | 110 | { |
corsa1600 | 0:436ff0be3c8f | 111 | if( _isr.read() ) |
corsa1600 | 0:436ff0be3c8f | 112 | _pressed = 1; |
corsa1600 | 0:436ff0be3c8f | 113 | } |
corsa1600 | 0:436ff0be3c8f | 114 | }; |
corsa1600 | 0:436ff0be3c8f | 115 | |
corsa1600 | 0:436ff0be3c8f | 116 | Counter counter(p14); |
corsa1600 | 0:436ff0be3c8f | 117 | SwEvent swevent (p15); |
corsa1600 | 0:436ff0be3c8f | 118 | |
corsa1600 | 0:436ff0be3c8f | 119 | int main() { |
corsa1600 | 0:436ff0be3c8f | 120 | while(1) { |
corsa1600 | 0:436ff0be3c8f | 121 | printf("Count so far: %d\n", counter.read()); |
corsa1600 | 0:436ff0be3c8f | 122 | printf("true/false so far: %d\n", swevent.read()); |
corsa1600 | 0:436ff0be3c8f | 123 | wait(2); |
corsa1600 | 0:436ff0be3c8f | 124 | } |
corsa1600 | 0:436ff0be3c8f | 125 | } |
corsa1600 | 0:436ff0be3c8f | 126 | |
corsa1600 | 0:436ff0be3c8f | 127 | */ |