Matthias Reichstam
/
UebenMarkus2_TINF_16102018
Ueben mit Markus 2 TINF 16102018
Revision 0:9bd8aa4fca8a, committed 2018-11-15
- Comitter:
- Reichi19
- Date:
- Thu Nov 15 17:26:48 2018 +0000
- Commit message:
- ?ben mit markus TINF
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 9bd8aa4fca8a main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Nov 15 17:26:48 2018 +0000 @@ -0,0 +1,74 @@ +#include "mbed.h" + + + +// ---------------- Serial RS232 Event Class -------------------------- +const uint8_t STRMAX = 20; // const = Konstante Variable --> Varable mit einen bestimmte Typ der immer gleich bleibt +const char EOT = '.'; // const = Konstante Variable --> Varable mit einen bestimmte Typ der immer gleich bleibt +const char CRLF = '\n'; // const = Konstante Variable --> Varable mit einen bestimmte Typ der immer gleich bleibt + +class SerialEvent { // classe erstellen und weisen den Namen zu + Serial _pc; // Ertellen des Objekts _pc aus der Klasse Serial + void _risingISR(); // Methode erstellen + char _str[STRMAX]; // Es wird ein String erstellt mit der Maximallänge von STRMAX(20) + volatile bool _strOkFlag; // VOLATILE --> Wert zur Laufzeit bool--> Datentyp _strOkFlag --> Name der Variable + int _index; // Variable mit dem Datentyp Int + + // Public Ist öffentlich und von extern zugänglich + public: + // SerialEvent --> Konstruktor / PinName --> PIN bezeichnung vom Mbed / tx --> übergabeparameter / : --> kurzzuweisung + SerialEvent(PinName tx, PinName rx) : _pc(tx, rx) { // create the Serial on the pin specified to SwEvent + // attach --> anhängen / Obejekt SerialEvent / & --> Pointer / pc_recv --> Funktion / :: braucht man wenn es auserhalb der Classe steht aber zur Classe gehört + _pc.attach(callback(this, &SerialEvent::pc_recv)); // attach DataReceive-function of this SerialEvent instance + _strOkFlag = false; // Variable zuweisen auf false + _index=0; // Variable zuweisen auf 0 + + } + void pc_recv(); // Methode prototyping ( Namendliche erwähnung in der Klasse damit der Combiler weis, dass die Funktion vorhanden ist + void getString(char st[]); // Methode prototyping ( Namendliche erwähnung in der Klasse damit der Combiler weis, dass die Funktion vorhanden ist + int checkFlag(); // must in do-condition (while(true)-loop) continuously interrogated +}; + +// ---------------- Serial Event Class Methodes -------------------------- +void SerialEvent::getString(char st[]) { + for( int i=0; i <= _index; i++) + st[i] = _str[i]; + _index=0; +} + +void SerialEvent::pc_recv() { + char c; + while(_pc.readable()){ // _pc.readable schaut nach ob Daten im Puffer zum auslesen sind oder nicht + c = _pc.getc(); + if((c != CRLF) && (_index < STRMAX)) { + _str[_index++] = c; + } + } + if(( c == EOT)) { // end: . string not empty + if(_index >= 1) { + _strOkFlag = true; + _str[--_index] = 0; + } + } +} + +int SerialEvent::checkFlag() { + if( _strOkFlag ) { + _strOkFlag = false; + return 1; + } + return 0; +} + +SerialEvent se(USBTX, USBRX); +char str[STRMAX]; + +int main() { + printf("Hello\n"); + while(1) { + if(se.checkFlag()) { + se.getString(str); + printf("String: %s\n", str); + } +} +} \ No newline at end of file
diff -r 000000000000 -r 9bd8aa4fca8a mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Nov 15 17:26:48 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/e95d10626187 \ No newline at end of file