This program shows, how a serial interrupt can be handled. Here a state machine is set up where the states can be changed from \'offline\' to \'online\' and backwards over UART

Dependencies:   mbed

Committer:
goeckeritz
Date:
Wed Apr 20 10:00:26 2011 +0000
Revision:
0:edfedf459fb2
initial upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
goeckeritz 0:edfedf459fb2 1 #include "mbed.h"
goeckeritz 0:edfedf459fb2 2
goeckeritz 0:edfedf459fb2 3 Serial pc(USBTX, USBRX); // tx, rx
goeckeritz 0:edfedf459fb2 4 PwmOut led(LED1);
goeckeritz 0:edfedf459fb2 5
goeckeritz 0:edfedf459fb2 6 DigitalOut led2(LED2, "led2");
goeckeritz 0:edfedf459fb2 7 DigitalOut led3(LED3, "led3");
goeckeritz 0:edfedf459fb2 8 DigitalOut led4(LED4, "led4");
goeckeritz 0:edfedf459fb2 9 bool lineState = 0;
goeckeritz 0:edfedf459fb2 10
goeckeritz 0:edfedf459fb2 11 char string[BUFSIZ];
goeckeritz 0:edfedf459fb2 12
goeckeritz 0:edfedf459fb2 13 void allOn()
goeckeritz 0:edfedf459fb2 14 {
goeckeritz 0:edfedf459fb2 15 pc.scanf("%s", &string);
goeckeritz 0:edfedf459fb2 16
goeckeritz 0:edfedf459fb2 17 //if(pc.readable()){
goeckeritz 0:edfedf459fb2 18 //pc.scanf("%s", &string);
goeckeritz 0:edfedf459fb2 19
goeckeritz 0:edfedf459fb2 20 if(!strcmp(string, "#online"))
goeckeritz 0:edfedf459fb2 21 {
goeckeritz 0:edfedf459fb2 22 lineState = 1;
goeckeritz 0:edfedf459fb2 23 pc.printf("This thing is online\n");
goeckeritz 0:edfedf459fb2 24 }
goeckeritz 0:edfedf459fb2 25 if(!strcmp(string, "#offline"))
goeckeritz 0:edfedf459fb2 26 {
goeckeritz 0:edfedf459fb2 27 lineState = 0;
goeckeritz 0:edfedf459fb2 28 pc.printf("This thing is offline\n");
goeckeritz 0:edfedf459fb2 29 }
goeckeritz 0:edfedf459fb2 30 pc.printf("%s\n", string);
goeckeritz 0:edfedf459fb2 31
goeckeritz 0:edfedf459fb2 32 led2 =! led2;
goeckeritz 0:edfedf459fb2 33 led3 =! led3;
goeckeritz 0:edfedf459fb2 34 led4 =! led4;
goeckeritz 0:edfedf459fb2 35 }
goeckeritz 0:edfedf459fb2 36
goeckeritz 0:edfedf459fb2 37
goeckeritz 0:edfedf459fb2 38
goeckeritz 0:edfedf459fb2 39 int main() {
goeckeritz 0:edfedf459fb2 40 pc.printf("Serial interrupt handler state machine\nstate changeble by typing '#online' or '#offline'\n\n");
goeckeritz 0:edfedf459fb2 41 pc.attach(&allOn);
goeckeritz 0:edfedf459fb2 42
goeckeritz 0:edfedf459fb2 43 while(1) {
goeckeritz 0:edfedf459fb2 44 wait(1);
goeckeritz 0:edfedf459fb2 45 pc.printf("lineState: %i\n",lineState);
goeckeritz 0:edfedf459fb2 46 }
goeckeritz 0:edfedf459fb2 47 }