A code for the spindling of bots.
Dependencies: MX12 ServoRingBuffer mbed-src
Fork of SpindleBot by
Serial_Receive.h@14:7c5beaa9fb01, 2015-08-13 (annotated)
- Committer:
- labmrd
- Date:
- Thu Aug 13 17:55:40 2015 +0000
- Revision:
- 14:7c5beaa9fb01
- Parent:
- 2:dfeadd6c651c
This revision marks Mark's mark of resignation from the labmrd mbed account.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
labmrd | 2:dfeadd6c651c | 1 | #ifndef Serial_Receive_h |
labmrd | 2:dfeadd6c651c | 2 | #define Serial_Receive_h |
labmrd | 2:dfeadd6c651c | 3 | |
labmrd | 2:dfeadd6c651c | 4 | #include "mbed.h" |
labmrd | 2:dfeadd6c651c | 5 | #include <string> |
labmrd | 2:dfeadd6c651c | 6 | |
labmrd | 2:dfeadd6c651c | 7 | //vars for Serial packet recieve |
labmrd | 2:dfeadd6c651c | 8 | int receivePacket(); |
labmrd | 2:dfeadd6c651c | 9 | #define SOP '<' |
labmrd | 2:dfeadd6c651c | 10 | #define EOP '>' |
labmrd | 2:dfeadd6c651c | 11 | bool started = false; |
labmrd | 2:dfeadd6c651c | 12 | bool ended = false; |
labmrd | 2:dfeadd6c651c | 13 | char inData[80]; |
labmrd | 2:dfeadd6c651c | 14 | unsigned char index; |
labmrd | 2:dfeadd6c651c | 15 | |
labmrd | 2:dfeadd6c651c | 16 | //Vars to process packet |
labmrd | 2:dfeadd6c651c | 17 | int newData[7] = {0}; |
labmrd | 2:dfeadd6c651c | 18 | char * val; |
labmrd | 2:dfeadd6c651c | 19 | char * tissue_type_name; |
labmrd | 2:dfeadd6c651c | 20 | int count = 0; |
labmrd | 2:dfeadd6c651c | 21 | std::string inString; |
labmrd | 2:dfeadd6c651c | 22 | |
labmrd | 2:dfeadd6c651c | 23 | int receivePacket(Serial &serialObject){ |
labmrd | 2:dfeadd6c651c | 24 | //receive data packet |
labmrd | 2:dfeadd6c651c | 25 | while(serialObject.readable() > 0) |
labmrd | 2:dfeadd6c651c | 26 | { |
labmrd | 2:dfeadd6c651c | 27 | char inChar = serialObject.getc(); |
labmrd | 2:dfeadd6c651c | 28 | |
labmrd | 2:dfeadd6c651c | 29 | if(inChar == SOP) |
labmrd | 2:dfeadd6c651c | 30 | { |
labmrd | 2:dfeadd6c651c | 31 | index = 0; |
labmrd | 2:dfeadd6c651c | 32 | inData[index] = '\0'; |
labmrd | 2:dfeadd6c651c | 33 | started = true; |
labmrd | 2:dfeadd6c651c | 34 | ended = false; |
labmrd | 2:dfeadd6c651c | 35 | } |
labmrd | 2:dfeadd6c651c | 36 | else if(inChar == EOP) |
labmrd | 2:dfeadd6c651c | 37 | { |
labmrd | 2:dfeadd6c651c | 38 | ended = true; |
labmrd | 2:dfeadd6c651c | 39 | break; |
labmrd | 2:dfeadd6c651c | 40 | } |
labmrd | 2:dfeadd6c651c | 41 | else |
labmrd | 2:dfeadd6c651c | 42 | { |
labmrd | 2:dfeadd6c651c | 43 | if(index < 79) |
labmrd | 2:dfeadd6c651c | 44 | { |
labmrd | 2:dfeadd6c651c | 45 | inData[index] = inChar; |
labmrd | 2:dfeadd6c651c | 46 | index++; |
labmrd | 2:dfeadd6c651c | 47 | inData[index] = '\0'; |
labmrd | 2:dfeadd6c651c | 48 | } |
labmrd | 2:dfeadd6c651c | 49 | } |
labmrd | 2:dfeadd6c651c | 50 | } |
labmrd | 2:dfeadd6c651c | 51 | // We are here either because all pending serial |
labmrd | 2:dfeadd6c651c | 52 | // data has been read OR because an end of |
labmrd | 2:dfeadd6c651c | 53 | // packet marker arrived. Which is it? |
labmrd | 2:dfeadd6c651c | 54 | if(started && ended) |
labmrd | 2:dfeadd6c651c | 55 | { |
labmrd | 2:dfeadd6c651c | 56 | inString=std::string(inData); |
labmrd | 2:dfeadd6c651c | 57 | tissue_type_name = strtok (inData,","); |
labmrd | 2:dfeadd6c651c | 58 | |
labmrd | 2:dfeadd6c651c | 59 | //newData[count] = atoi(val); |
labmrd | 2:dfeadd6c651c | 60 | |
labmrd | 2:dfeadd6c651c | 61 | while ((val = strtok (NULL, ",")) != NULL) |
labmrd | 2:dfeadd6c651c | 62 | { |
labmrd | 2:dfeadd6c651c | 63 | newData[++count] = atoi(val); |
labmrd | 2:dfeadd6c651c | 64 | } |
labmrd | 2:dfeadd6c651c | 65 | |
labmrd | 2:dfeadd6c651c | 66 | // Reset for the next packet |
labmrd | 2:dfeadd6c651c | 67 | started = false; |
labmrd | 2:dfeadd6c651c | 68 | ended = false; |
labmrd | 2:dfeadd6c651c | 69 | index = 0; |
labmrd | 2:dfeadd6c651c | 70 | inData[index] = '\0'; |
labmrd | 2:dfeadd6c651c | 71 | count = 0; |
labmrd | 2:dfeadd6c651c | 72 | |
labmrd | 2:dfeadd6c651c | 73 | // Flush any remaining characters from the buffer |
labmrd | 2:dfeadd6c651c | 74 | while(serialObject.readable() > 0) |
labmrd | 2:dfeadd6c651c | 75 | { |
labmrd | 2:dfeadd6c651c | 76 | serialObject.getc(); |
labmrd | 2:dfeadd6c651c | 77 | } |
labmrd | 2:dfeadd6c651c | 78 | |
labmrd | 2:dfeadd6c651c | 79 | return 1; |
labmrd | 2:dfeadd6c651c | 80 | } |
labmrd | 2:dfeadd6c651c | 81 | return 0; |
labmrd | 2:dfeadd6c651c | 82 | } |
labmrd | 2:dfeadd6c651c | 83 | |
labmrd | 2:dfeadd6c651c | 84 | |
labmrd | 2:dfeadd6c651c | 85 | #endif |