3

Dependencies:   mbed

Fork of RS232_3 by Andreas Schögler

Committer:
AndreasSchoegler
Date:
Tue Jun 09 17:41:05 2015 +0000
Revision:
0:66682d3a234e
sd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AndreasSchoegler 0:66682d3a234e 1 #include "mbed.h"
AndreasSchoegler 0:66682d3a234e 2
AndreasSchoegler 0:66682d3a234e 3
AndreasSchoegler 0:66682d3a234e 4 InterruptIn iiUp(p15);
AndreasSchoegler 0:66682d3a234e 5 Timer timer1;
AndreasSchoegler 0:66682d3a234e 6 int los=0;
AndreasSchoegler 0:66682d3a234e 7
AndreasSchoegler 0:66682d3a234e 8 // global vars and objects
AndreasSchoegler 0:66682d3a234e 9 DigitalOut led2(LED2);
AndreasSchoegler 0:66682d3a234e 10 Serial pc(USBTX, USBRX); // tx, rx ; is default !!! (9600, 8N1)
AndreasSchoegler 0:66682d3a234e 11 char recChar=0;
AndreasSchoegler 0:66682d3a234e 12 bool recFlag=false;
AndreasSchoegler 0:66682d3a234e 13 char recArr[20];
AndreasSchoegler 0:66682d3a234e 14 int index=0;
AndreasSchoegler 0:66682d3a234e 15
AndreasSchoegler 0:66682d3a234e 16 // functions
AndreasSchoegler 0:66682d3a234e 17 void flushSerialBuffer() {
AndreasSchoegler 0:66682d3a234e 18 while (pc.readable()) {
AndreasSchoegler 0:66682d3a234e 19 pc.getc();
AndreasSchoegler 0:66682d3a234e 20 }
AndreasSchoegler 0:66682d3a234e 21 }
AndreasSchoegler 0:66682d3a234e 22
AndreasSchoegler 0:66682d3a234e 23 void readData() {
AndreasSchoegler 0:66682d3a234e 24
AndreasSchoegler 0:66682d3a234e 25 if(los>=1)
AndreasSchoegler 0:66682d3a234e 26 {
AndreasSchoegler 0:66682d3a234e 27 recChar = pc.getc();
AndreasSchoegler 0:66682d3a234e 28 recArr[index] = recChar;
AndreasSchoegler 0:66682d3a234e 29 index++;
AndreasSchoegler 0:66682d3a234e 30 if ((recChar == '\r') || (index>=19)) {
AndreasSchoegler 0:66682d3a234e 31 recFlag = true;
AndreasSchoegler 0:66682d3a234e 32 recArr[index] = 0;
AndreasSchoegler 0:66682d3a234e 33
AndreasSchoegler 0:66682d3a234e 34 float t = timer1.read_ms();
AndreasSchoegler 0:66682d3a234e 35 pc.printf(" - That's the input: %f L= %d %s\r\n", t,index,recArr);
AndreasSchoegler 0:66682d3a234e 36 if(index<5)
AndreasSchoegler 0:66682d3a234e 37 {
AndreasSchoegler 0:66682d3a234e 38 pc.printf("Eingabe zu kurz ");
AndreasSchoegler 0:66682d3a234e 39 }
AndreasSchoegler 0:66682d3a234e 40 if(index>10)
AndreasSchoegler 0:66682d3a234e 41 {
AndreasSchoegler 0:66682d3a234e 42 pc.printf("Eingabe zu lang ");
AndreasSchoegler 0:66682d3a234e 43 }
AndreasSchoegler 0:66682d3a234e 44 index = 0;
AndreasSchoegler 0:66682d3a234e 45 timer1.stop();
AndreasSchoegler 0:66682d3a234e 46 timer1.reset();
AndreasSchoegler 0:66682d3a234e 47 flushSerialBuffer();
AndreasSchoegler 0:66682d3a234e 48 los=0;
AndreasSchoegler 0:66682d3a234e 49
AndreasSchoegler 0:66682d3a234e 50 }
AndreasSchoegler 0:66682d3a234e 51 }
AndreasSchoegler 0:66682d3a234e 52 }
AndreasSchoegler 0:66682d3a234e 53
AndreasSchoegler 0:66682d3a234e 54 void SendText()
AndreasSchoegler 0:66682d3a234e 55 {
AndreasSchoegler 0:66682d3a234e 56
AndreasSchoegler 0:66682d3a234e 57 pc.printf("Geben Sie ein Wort mit mindestens 5 und maximal 10 ein:");
AndreasSchoegler 0:66682d3a234e 58 timer1.start();
AndreasSchoegler 0:66682d3a234e 59 los=1;
AndreasSchoegler 0:66682d3a234e 60
AndreasSchoegler 0:66682d3a234e 61 }
AndreasSchoegler 0:66682d3a234e 62
AndreasSchoegler 0:66682d3a234e 63 int main() {
AndreasSchoegler 0:66682d3a234e 64 // pc.baud(115200);
AndreasSchoegler 0:66682d3a234e 65 pc.baud(38400);
AndreasSchoegler 0:66682d3a234e 66 pc.format(8, SerialBase::Odd, 2);
AndreasSchoegler 0:66682d3a234e 67 led2 = 1;
AndreasSchoegler 0:66682d3a234e 68
AndreasSchoegler 0:66682d3a234e 69 flushSerialBuffer();
AndreasSchoegler 0:66682d3a234e 70 pc.printf("Hello RS232-USB Virtual Serial Port -World!\r\n");
AndreasSchoegler 0:66682d3a234e 71
AndreasSchoegler 0:66682d3a234e 72
AndreasSchoegler 0:66682d3a234e 73 pc.attach(&readData);
AndreasSchoegler 0:66682d3a234e 74
AndreasSchoegler 0:66682d3a234e 75
AndreasSchoegler 0:66682d3a234e 76 iiUp.rise(&SendText);
AndreasSchoegler 0:66682d3a234e 77
AndreasSchoegler 0:66682d3a234e 78 while(1) {
AndreasSchoegler 0:66682d3a234e 79 if (recFlag) {
AndreasSchoegler 0:66682d3a234e 80 flushSerialBuffer();
AndreasSchoegler 0:66682d3a234e 81 // pc.printf(" - That's the input: %s\r\n", recArr); // non reantrant function
AndreasSchoegler 0:66682d3a234e 82 recFlag = false;
AndreasSchoegler 0:66682d3a234e 83 led2 = !led2;
AndreasSchoegler 0:66682d3a234e 84 }
AndreasSchoegler 0:66682d3a234e 85 }
AndreasSchoegler 0:66682d3a234e 86 }