Andreas Schögler
/
RS232_3
fxz
Fork of RS232_3 by
main.cpp@0:66682d3a234e, 2015-06-09 (annotated)
- Committer:
- AndreasSchoegler
- Date:
- Tue Jun 09 17:41:05 2015 +0000
- Revision:
- 0:66682d3a234e
sd
Who changed what in which revision?
User | Revision | Line number | New 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 | } |