2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Cadence.h@41:1bd730c4840d, 2017-03-18 (annotated)
- Committer:
- tsumagari
- Date:
- Sat Mar 18 03:13:36 2017 +0000
- Branch:
- Thread-gyogetsuMPU
- Revision:
- 41:1bd730c4840d
- Parent:
- 37:34aaa1951390
- Child:
- 42:73c3862e4c12
Cadence.h?readData??????ver.???myBuff?string??????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tsumagari | 37:34aaa1951390 | 1 | //;2648 ;00 00000 0;168 ;001; 10043 c1;31 10;00 00;00 00;10 63;08 39;I; -012; 0002; 0104;\r\n |
tsumagari | 37:34aaa1951390 | 2 | //;109 ;00 00000 0;123 ;011; 10008 e4;27 95;00 00;00 00;13 99;08 51;G; -068; -096; -192; |
tsumagari | 15:6966299bea4c | 3 | #ifndef CADENCE_H |
tsumagari | 15:6966299bea4c | 4 | #define CADENCE_H |
tsumagari | 15:6966299bea4c | 5 | |
tsumagari | 15:6966299bea4c | 6 | #include "mbed.h" |
tsumagari | 15:6966299bea4c | 7 | #include <string> |
tsumagari | 34:c46f2f687c7b | 8 | DigitalOut led3(LED3); |
tsumagari | 41:1bd730c4840d | 9 | Timer cadenceT; |
tsumagari | 41:1bd730c4840d | 10 | class Cadence : public RawSerial |
tsumagari | 41:1bd730c4840d | 11 | { |
tsumagari | 41:1bd730c4840d | 12 | private: |
tsumagari | 41:1bd730c4840d | 13 | static const int DATAS_NUM = 75,BuffNum = 500; |
tsumagari | 41:1bd730c4840d | 14 | |
tsumagari | 41:1bd730c4840d | 15 | protected: |
tsumagari | 41:1bd730c4840d | 16 | |
tsumagari | 41:1bd730c4840d | 17 | public: |
tsumagari | 37:34aaa1951390 | 18 | string strC,strV; |
tsumagari | 37:34aaa1951390 | 19 | char data[DATAS_NUM],myBuff[BuffNum],c; |
tsumagari | 15:6966299bea4c | 20 | string strData; |
tsumagari | 41:1bd730c4840d | 21 | int dataCount, data_num; |
tsumagari | 37:34aaa1951390 | 22 | double cadence, voltage; |
tsumagari | 41:1bd730c4840d | 23 | Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx) { |
tsumagari | 41:1bd730c4840d | 24 | for(int i=0; i<DATAS_NUM; i++) data[i]= '\0'; |
tsumagari | 41:1bd730c4840d | 25 | for(int i = 0; i<BuffNum; i++) myBuff[i] = '\0'; |
tsumagari | 37:34aaa1951390 | 26 | data_num=0; |
tsumagari | 41:1bd730c4840d | 27 | dataCount=0; |
tsumagari | 15:6966299bea4c | 28 | baud(115200); |
tsumagari | 15:6966299bea4c | 29 | cadence=0; |
tsumagari | 15:6966299bea4c | 30 | voltage=0; |
tsumagari | 41:1bd730c4840d | 31 | cadenceT.start(); |
tsumagari | 41:1bd730c4840d | 32 | // attach(this, &Cadence::readData, RawSerial::RxIrq); |
tsumagari | 15:6966299bea4c | 33 | } |
tsumagari | 41:1bd730c4840d | 34 | int checkInt(const char c[]) { |
tsumagari | 41:1bd730c4840d | 35 | for(int i = 0; i<strlen(c); i++) { |
tsumagari | 37:34aaa1951390 | 36 | if( c[0] == '-' ) continue; |
tsumagari | 37:34aaa1951390 | 37 | if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1; |
tsumagari | 41:1bd730c4840d | 38 | } |
tsumagari | 41:1bd730c4840d | 39 | return 1; |
tsumagari | 34:c46f2f687c7b | 40 | } |
tsumagari | 41:1bd730c4840d | 41 | void readData() { |
tsumagari | 41:1bd730c4840d | 42 | if(readable()) { |
tsumagari | 41:1bd730c4840d | 43 | cadenceT.reset(); |
tsumagari | 41:1bd730c4840d | 44 | cadenceT.start(); |
tsumagari | 41:1bd730c4840d | 45 | dataCount = 0; |
tsumagari | 41:1bd730c4840d | 46 | do { |
tsumagari | 41:1bd730c4840d | 47 | myBuff[dataCount] = getc(); |
tsumagari | 41:1bd730c4840d | 48 | dataCount++; |
tsumagari | 41:1bd730c4840d | 49 | } while(cadenceT.read_us()<1 || myBuff[dataCount-1] != '\n'); |
tsumagari | 41:1bd730c4840d | 50 | } |
tsumagari | 41:1bd730c4840d | 51 | if(dataCount != 0) { |
tsumagari | 41:1bd730c4840d | 52 | dataCount = 0; |
tsumagari | 41:1bd730c4840d | 53 | led3 = 1; |
tsumagari | 41:1bd730c4840d | 54 | for(int i = 0; i< strlen(myBuff); i ++) |
tsumagari | 41:1bd730c4840d | 55 | strData += myBuff[i]; |
tsumagari | 41:1bd730c4840d | 56 | //strData = string(myBuff,DATAS_NUM); |
tsumagari | 41:1bd730c4840d | 57 | if( int strlength = strData.length() > DATAS_NUM-4 && strlength < DATAS_NUM ) { |
tsumagari | 37:34aaa1951390 | 58 | // for(int i = 0; i<4; i++){ |
tsumagari | 41:1bd730c4840d | 59 | // strC += data[dataCount-6+i]; |
tsumagari | 41:1bd730c4840d | 60 | // strV += data[dataCount-43+i]; |
tsumagari | 37:34aaa1951390 | 61 | // } |
tsumagari | 37:34aaa1951390 | 62 | // if( checkInt(strC) ) sscanf(strC,"%lf",&cadence); |
tsumagari | 37:34aaa1951390 | 63 | // if( checkInt(strV) ) sscanf(strV,"%lf",&voltage); |
tsumagari | 37:34aaa1951390 | 64 | |
tsumagari | 41:1bd730c4840d | 65 | switch (strlength) { |
tsumagari | 41:1bd730c4840d | 66 | case DATAS_NUM-3 : |
tsumagari | 41:1bd730c4840d | 67 | strData.erase(0,2); |
tsumagari | 41:1bd730c4840d | 68 | break; |
tsumagari | 41:1bd730c4840d | 69 | case DATAS_NUM-2 : |
tsumagari | 41:1bd730c4840d | 70 | strData.erase(0,3); |
tsumagari | 41:1bd730c4840d | 71 | break; |
tsumagari | 41:1bd730c4840d | 72 | case DATAS_NUM-1 : |
tsumagari | 41:1bd730c4840d | 73 | strData.erase(0,4); |
tsumagari | 41:1bd730c4840d | 74 | break; |
tsumagari | 41:1bd730c4840d | 75 | case DATAS_NUM : |
tsumagari | 41:1bd730c4840d | 76 | strData.erase(0,5); |
tsumagari | 41:1bd730c4840d | 77 | } |
tsumagari | 41:1bd730c4840d | 78 | strV = strData.substr(27,4); |
tsumagari | 41:1bd730c4840d | 79 | strC = strData.substr(64,4); |
tsumagari | 41:1bd730c4840d | 80 | if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); |
tsumagari | 41:1bd730c4840d | 81 | if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); |
tsumagari | 41:1bd730c4840d | 82 | |
tsumagari | 41:1bd730c4840d | 83 | cadence /= 6.0; |
tsumagari | 41:1bd730c4840d | 84 | voltage *= 0.001; |
tsumagari | 41:1bd730c4840d | 85 | }//strlength |
tsumagari | 41:1bd730c4840d | 86 | // led3 = 0; |
tsumagari | 41:1bd730c4840d | 87 | for (int i = 0; i < strlen(myBuff); i++) myBuff[i] = '\0'; |
tsumagari | 41:1bd730c4840d | 88 | dataCount = 0; |
tsumagari | 41:1bd730c4840d | 89 | }//if(dataCount != 0) |
tsumagari | 41:1bd730c4840d | 90 | }//readData |
tsumagari | 15:6966299bea4c | 91 | }; |
tsumagari | 15:6966299bea4c | 92 | #endif |