Zac Dannelly
/
testGet
code for interface on mbed coordinator
Revision 0:a0bf1c99732b, committed 2015-06-12
- Comitter:
- dannellyz
- Date:
- Fri Jun 12 14:58:34 2015 +0000
- Commit message:
- code for interface on mbed coordinator;
Changed in this revision
diff -r 000000000000 -r a0bf1c99732b C12832_lcd.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832_lcd.lib Fri Jun 12 14:58:34 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/C12832_lcd/#8f86576007d6
diff -r 000000000000 -r a0bf1c99732b main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jun 12 14:58:34 2015 +0000 @@ -0,0 +1,95 @@ +// Example of parsing the serial string from the fullAppBaordSend +/* Code derived from the work of Joe Bradshaw: + http://developer.mbed.org/users/jebradshaw/ */ +/******************Declaration of necessary libraries and objects************************/ +#include "mbed.h" +#include "C12832_lcd.h" // Include for LCD code +/******************Declaration of necessary variables***********************************/ +DigitalOut myled(LED1); //For LED +Serial pc(USBTX, USBRX); //tx, rx via USB connection +Serial xbee(p9, p10); //tx, rx via Xbee socket +C12832_LCD lcd; // Decalre LCD screen +LocalFileSystem local("local"); // Create the local filesystem under the name "local" +float totalTime = 0.0; //Total time used to calulate average wait time +float avgTime = 0.0; //Average time when error detected +int errors = 0; //Number of errors +int total = 0; //Total number of transmissisons +float pctErr = 0.0; //Percent of transmissions in error +void keepAverage(float newNum); //Prototype for funciton to make calculations + +int main() +{ + char abstr[25]; //used to store the whole app board string + int joystick; //int value correspponding to the joystick bus + float Lpot; //float correspionding to left potentiometer + float Rpot; //float correspionding to right potentiometer + int id; + pc.baud(9600); //crank up the PC baudrate (USB) to avoid latency between data acquisition + //xbee.baud(9600); + //Setup LCD screen + lcd.cls(); + lcd.locate(0,1); + //Set up timers for transmission information + Timer t1; + Timer t2; + //Start timers + t1.start(); + t2.start(); + while(1) { + while(xbee.readable()) //clear out the remaining characters in the buffer + char c = xbee.getc(); + //read the serial string from the xbee (starts with '$', ends with \r\n + xbee.scanf("$%s\r\n", &abstr); + //Verify that the string has the APPBOARD header + if(strncmp(abstr, "APPBOARD", 9)) { + //Verify the tring was able to be parsed + if (sscanf(abstr, "APPBOARD,%f,%f,%d,%d",&Lpot,&Rpot,&joystick,&id) >= 1) { + //Check which input the transmission came from an act accordingly + if (id==0) { + //Read time and report how long it has been since node was pooled + if(t2.read() > 1) { + //If time is more than 1 second consider it an error + //Run the analysis program + keepAverage(t2.read()); + } + //Reset time + t2.reset(); + //Print information to LCD screen + lcd.locate(0,1); + lcd.printf("M%d: L:%.02f R:%.02f J:%d %.02f\r\n",id,Lpot,Rpot,joystick,t1.read()); + } + if (id==1) { + if(t1.read() > 1) { + keepAverage(t1.read()); + } + t1.reset(); + lcd.locate(0,14); + lcd.printf("M%d: L:%.02f R:%.02f J:%d %.02f\r\n",id,Lpot,Rpot,joystick,t2.read()); + } + //Print values to screen + pc.printf("Mbed %d: L-%.02f:L R-%.02f Joystick:%d\r\n",id,Lpot,Rpot,joystick); + } else { + //Incorrect parse + pc.printf("BAD parse %s\r\n", abstr); + } + } + //Increment total + total+=1; + myled = !myled; //toggle LED for activity verification + + }//while(1) +}//main + +void keepAverage(float newNum) +{ + Timer t3; + t3.start(); + errors ++; + totalTime += newNum; + avgTime = totalTime/(float)errors; + pctErr = (float)errors/(float)total; + pc.printf("overNum:%f avgErrTime:%.04f totalErrs:%d totalOut:%d pctErr:%.02f\r\n", newNum,avgTime,errors,total,pctErr); + FILE *fp = fopen("/local/out.csv", "a"); // Open "out.txt" on the local file system for writing + fprintf(fp,"%f,%.04f,%d,%d,%.02f,%.02f\r\n", newNum,avgTime,errors,total,pctErr,t3.read()); + fclose(fp); +} \ No newline at end of file
diff -r 000000000000 -r a0bf1c99732b mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Jun 12 14:58:34 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/433970e64889 \ No newline at end of file