A code for the spindling of bots.

Dependencies:   MX12 ServoRingBuffer mbed-src

Fork of SpindleBot by MRD Lab

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?

UserRevisionLine numberNew 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