Klassen

Dependencies:   mbed

Committer:
corsa1600
Date:
Mon Feb 04 17:00:11 2019 +0000
Revision:
0:436ff0be3c8f
Klassen

Who changed what in which revision?

UserRevisionLine numberNew 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 */