A serial parser for a specific project

Dependencies:   mbed

Fork of Serial_HelloWorld_Mbed by mbed official

Committer:
philipgoosen
Date:
Tue Jul 14 15:48:52 2015 +0000
Revision:
7:d25708589910
Parent:
6:da101b92bc2d
moo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:879aa9d0247b 1 #include "mbed.h"
philipgoosen 7:d25708589910 2
philipgoosen 5:1ba2b0e9e582 3 // Data parser by Philip Goosen
mbed_official 0:879aa9d0247b 4
philipgoosen 3:3399899d714b 5 /*#define TX USBTX
philipgoosen 3:3399899d714b 6 #define RX USBRX*/
philipgoosen 3:3399899d714b 7
philipgoosen 4:178b04ae427e 8 #define TX PA_2
philipgoosen 4:178b04ae427e 9 #define RX PA_3
philipgoosen 7:d25708589910 10 #define VERSION 1
philipgoosen 2:dcca46d7ca21 11
philipgoosen 2:dcca46d7ca21 12 Serial pc(TX, RX); // tx, rx
philipgoosen 1:49996c8d2982 13 DigitalOut led(LED1);
philipgoosen 7:d25708589910 14
philipgoosen 7:d25708589910 15 using namespace std;
mbed_official 0:879aa9d0247b 16
philipgoosen 6:da101b92bc2d 17 int isDigit(char digit)
philipgoosen 2:dcca46d7ca21 18 {
philipgoosen 2:dcca46d7ca21 19 if (digit >= '0' or digit <= '9')
philipgoosen 2:dcca46d7ca21 20 {
philipgoosen 2:dcca46d7ca21 21 return 1;
philipgoosen 2:dcca46d7ca21 22 }
philipgoosen 2:dcca46d7ca21 23 else
philipgoosen 2:dcca46d7ca21 24 {
philipgoosen 2:dcca46d7ca21 25 return 0;
philipgoosen 2:dcca46d7ca21 26 }
philipgoosen 2:dcca46d7ca21 27 }
philipgoosen 2:dcca46d7ca21 28
philipgoosen 5:1ba2b0e9e582 29 int isLetter(char let) // Only works for upper case
philipgoosen 5:1ba2b0e9e582 30 {
philipgoosen 5:1ba2b0e9e582 31 if (let >= 'A' or let <= 'Z')
philipgoosen 5:1ba2b0e9e582 32 {
philipgoosen 5:1ba2b0e9e582 33 return 1;
philipgoosen 5:1ba2b0e9e582 34 }
philipgoosen 6:da101b92bc2d 35 else
philipgoosen 6:da101b92bc2d 36 {
philipgoosen 6:da101b92bc2d 37 return 0;
philipgoosen 6:da101b92bc2d 38 }
philipgoosen 6:da101b92bc2d 39 }
philipgoosen 6:da101b92bc2d 40
philipgoosen 6:da101b92bc2d 41 int isAlpha(char c)
philipgoosen 6:da101b92bc2d 42 {
philipgoosen 6:da101b92bc2d 43 if( isDigit(c) or isLetter(c) )
philipgoosen 6:da101b92bc2d 44 {
philipgoosen 6:da101b92bc2d 45 return 1;
philipgoosen 6:da101b92bc2d 46 }
philipgoosen 6:da101b92bc2d 47 else
philipgoosen 6:da101b92bc2d 48 {
philipgoosen 6:da101b92bc2d 49 return 0;
philipgoosen 6:da101b92bc2d 50 }
philipgoosen 5:1ba2b0e9e582 51 }
philipgoosen 5:1ba2b0e9e582 52
philipgoosen 2:dcca46d7ca21 53 int toDigit(char c)
philipgoosen 2:dcca46d7ca21 54 {
philipgoosen 2:dcca46d7ca21 55 return (c - '0');
philipgoosen 2:dcca46d7ca21 56 }
philipgoosen 2:dcca46d7ca21 57
philipgoosen 2:dcca46d7ca21 58 int main()
philipgoosen 2:dcca46d7ca21 59 {
philipgoosen 6:da101b92bc2d 60 int motor = 0;
philipgoosen 6:da101b92bc2d 61 int direction = 0;
philipgoosen 6:da101b92bc2d 62 int speed = 0;
philipgoosen 6:da101b92bc2d 63
philipgoosen 1:49996c8d2982 64 led=1;
philipgoosen 1:49996c8d2982 65 wait(0.5);
philipgoosen 1:49996c8d2982 66 led=0;
philipgoosen 1:49996c8d2982 67 pc.baud(115200);
philipgoosen 7:d25708589910 68 pc.printf("Philip's program VERSION");
philipgoosen 2:dcca46d7ca21 69 while(1)
philipgoosen 2:dcca46d7ca21 70 {
philipgoosen 1:49996c8d2982 71 //pc.putc(pc.getc() + 1);
philipgoosen 4:178b04ae427e 72 if (pc.getc() == '$' && pc.getc() == '#')
philipgoosen 1:49996c8d2982 73 {
philipgoosen 7:d25708589910 74 printf("\nRecieved input...\n");
philipgoosen 4:178b04ae427e 75 /*led=1;
philipgoosen 1:49996c8d2982 76 wait(1);
philipgoosen 1:49996c8d2982 77 led=0;
philipgoosen 1:49996c8d2982 78 led=1;
philipgoosen 1:49996c8d2982 79 wait(1);
philipgoosen 4:178b04ae427e 80 led=0;*/
philipgoosen 2:dcca46d7ca21 81
philipgoosen 2:dcca46d7ca21 82 char c = pc.getc();// Gets a character from the computer that should be a digit from 0 - 9
philipgoosen 2:dcca46d7ca21 83
philipgoosen 6:da101b92bc2d 84 //int count = toDigit(c);
philipgoosen 2:dcca46d7ca21 85 int x = 0;
philipgoosen 7:d25708589910 86 bool work = true;
philipgoosen 2:dcca46d7ca21 87
philipgoosen 6:da101b92bc2d 88 while (x < 3)
philipgoosen 2:dcca46d7ca21 89 {
philipgoosen 7:d25708589910 90 char cur = pc.getc();
philipgoosen 7:d25708589910 91 char next = pc.getc();
philipgoosen 7:d25708589910 92
philipgoosen 7:d25708589910 93 // Add alpha checks to these
philipgoosen 7:d25708589910 94 if (cur == 'M' && x==0 && isDigit(next))
philipgoosen 7:d25708589910 95 {
philipgoosen 7:d25708589910 96 motor = toDigit(next);
philipgoosen 7:d25708589910 97 }
philipgoosen 7:d25708589910 98 else if (cur == 'D' && x==1 && isDigit(next))
philipgoosen 7:d25708589910 99 {
philipgoosen 7:d25708589910 100 direction = toDigit(next);
philipgoosen 7:d25708589910 101 }
philipgoosen 7:d25708589910 102 else if (cur == 'S' && x==2 && isDigit(next))
philipgoosen 7:d25708589910 103 {
philipgoosen 7:d25708589910 104 char readSpeed[3] = {' ', ' ', '\0'};
philipgoosen 7:d25708589910 105 readSpeed[0] = next;
philipgoosen 7:d25708589910 106 //readSpeed[2] = '\0';
philipgoosen 7:d25708589910 107 cur = pc.getc();
philipgoosen 7:d25708589910 108 if ( isDigit(cur) )
philipgoosen 7:d25708589910 109 {
philipgoosen 7:d25708589910 110 readSpeed[1] = cur;
philipgoosen 7:d25708589910 111 }
philipgoosen 7:d25708589910 112 else
philipgoosen 7:d25708589910 113 {
philipgoosen 7:d25708589910 114 readSpeed[1] = '\0';
philipgoosen 7:d25708589910 115 }
philipgoosen 7:d25708589910 116 speed = atoi(readSpeed);
philipgoosen 7:d25708589910 117 }
philipgoosen 7:d25708589910 118 else
philipgoosen 7:d25708589910 119 {
philipgoosen 7:d25708589910 120 work = false;
philipgoosen 7:d25708589910 121 printf("Invalid format");
philipgoosen 7:d25708589910 122 }
philipgoosen 7:d25708589910 123
philipgoosen 7:d25708589910 124
philipgoosen 3:3399899d714b 125 x++;
philipgoosen 2:dcca46d7ca21 126 }
philipgoosen 7:d25708589910 127 if (work)
philipgoosen 7:d25708589910 128 {
philipgoosen 7:d25708589910 129 //set values to servo library
philipgoosen 7:d25708589910 130 pc.printf("\nMotor %d Direction %d Speed %d", motor, speed, direction);
philipgoosen 7:d25708589910 131
philipgoosen 7:d25708589910 132 }
philipgoosen 1:49996c8d2982 133 }
mbed_official 0:879aa9d0247b 134 }
mbed_official 0:879aa9d0247b 135 }