Vincenzo Comito / Mbed 2 deprecated AEB

Dependencies:   mbed

Committer:
clynamen
Date:
Sun Jul 24 14:42:26 2016 +0000
Revision:
0:9d530d56a118
violante;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
clynamen 0:9d530d56a118 1 #include <mbed.h>
clynamen 0:9d530d56a118 2
clynamen 0:9d530d56a118 3 extern Serial pc;
clynamen 0:9d530d56a118 4
clynamen 0:9d530d56a118 5 void serialSend(float v) {
clynamen 0:9d530d56a118 6 pc.printf("aaaa"); // header
clynamen 0:9d530d56a118 7 unsigned char* data = (unsigned char*) &v;
clynamen 0:9d530d56a118 8 for (int i = 0; i < 4; i++) {
clynamen 0:9d530d56a118 9 pc.putc(data[i]);
clynamen 0:9d530d56a118 10 }
clynamen 0:9d530d56a118 11 pc.printf("\r\n"); // end of line
clynamen 0:9d530d56a118 12 }
clynamen 0:9d530d56a118 13
clynamen 0:9d530d56a118 14 void serialSendVec(float vec[], int length) {
clynamen 0:9d530d56a118 15 pc.printf("aaaa"); // header
clynamen 0:9d530d56a118 16 unsigned char* data = (unsigned char*) vec;
clynamen 0:9d530d56a118 17 for (int i = 0; i < length*4; i++) {
clynamen 0:9d530d56a118 18 pc.putc(data[i]);
clynamen 0:9d530d56a118 19 }
clynamen 0:9d530d56a118 20 pc.printf("\r\n"); // end of line
clynamen 0:9d530d56a118 21
clynamen 0:9d530d56a118 22 }
clynamen 0:9d530d56a118 23
clynamen 0:9d530d56a118 24 enum RecvState {
clynamen 0:9d530d56a118 25 NONE,
clynamen 0:9d530d56a118 26 HEADER,
clynamen 0:9d530d56a118 27 DATA,
clynamen 0:9d530d56a118 28 END
clynamen 0:9d530d56a118 29 };
clynamen 0:9d530d56a118 30
clynamen 0:9d530d56a118 31 float serialRecv() {
clynamen 0:9d530d56a118 32 RecvState state = NONE;
clynamen 0:9d530d56a118 33 int headerStep = 0;
clynamen 0:9d530d56a118 34 int dataStep = 0;
clynamen 0:9d530d56a118 35 bool receiving = 1;
clynamen 0:9d530d56a118 36 char buf[8];
clynamen 0:9d530d56a118 37 float v = -10;
clynamen 0:9d530d56a118 38 while(receiving) {
clynamen 0:9d530d56a118 39 char c = pc.getc();
clynamen 0:9d530d56a118 40 switch(state) {
clynamen 0:9d530d56a118 41 case NONE:
clynamen 0:9d530d56a118 42 case HEADER:
clynamen 0:9d530d56a118 43 if(c == 'a') {
clynamen 0:9d530d56a118 44 headerStep++;
clynamen 0:9d530d56a118 45 if(headerStep == 4) {
clynamen 0:9d530d56a118 46 state = DATA;
clynamen 0:9d530d56a118 47 dataStep = 0;
clynamen 0:9d530d56a118 48 v = 0;
clynamen 0:9d530d56a118 49 }
clynamen 0:9d530d56a118 50 } else {
clynamen 0:9d530d56a118 51 headerStep = 0;
clynamen 0:9d530d56a118 52 }
clynamen 0:9d530d56a118 53 break;
clynamen 0:9d530d56a118 54 case DATA:
clynamen 0:9d530d56a118 55 dataStep += 1;
clynamen 0:9d530d56a118 56 buf[dataStep-1] = c;
clynamen 0:9d530d56a118 57 if(dataStep == 4) {
clynamen 0:9d530d56a118 58 state = END;
clynamen 0:9d530d56a118 59 v = *(float*)buf;
clynamen 0:9d530d56a118 60 }
clynamen 0:9d530d56a118 61 break;
clynamen 0:9d530d56a118 62 case END:
clynamen 0:9d530d56a118 63 if(c == '\r' && pc.getc() == '\n') {
clynamen 0:9d530d56a118 64 return v;
clynamen 0:9d530d56a118 65 } else {
clynamen 0:9d530d56a118 66 state = NONE;
clynamen 0:9d530d56a118 67 headerStep = 0;
clynamen 0:9d530d56a118 68 }
clynamen 0:9d530d56a118 69 break;
clynamen 0:9d530d56a118 70 }
clynamen 0:9d530d56a118 71 }
clynamen 0:9d530d56a118 72 return v;
clynamen 0:9d530d56a118 73 }