回転数計のクラスです。
Dependencies: mbed
Fork of test_cadenceClass by
Cadence.h@6:93f90c5d0e5b, 2017-02-18 (annotated)
- Committer:
- tsumagari
- Date:
- Sat Feb 18 07:57:27 2017 +0000
- Revision:
- 6:93f90c5d0e5b
- Parent:
- 5:871c2d6c1129
RawSerial?attach
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tsumagari | 6:93f90c5d0e5b | 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 | 6:93f90c5d0e5b | 2 | //;109 ;00 00000 0;123 ;011; 10008 e4;27 95;00 00;00 00;13 99;08 51;G; -068; -096; -192; |
tsumagari | 0:57308daf8dfe | 3 | #ifndef CADENCE_H |
tsumagari | 0:57308daf8dfe | 4 | #define CADENCE_H |
tsumagari | 0:57308daf8dfe | 5 | |
tsumagari | 0:57308daf8dfe | 6 | #include "mbed.h" |
tsumagari | 0:57308daf8dfe | 7 | #include <string> |
tsumagari | 6:93f90c5d0e5b | 8 | DigitalOut led3(LED3); |
tsumagari | 6:93f90c5d0e5b | 9 | class Cadence : public RawSerial{ |
tsumagari | 0:57308daf8dfe | 10 | private: |
tsumagari | 6:93f90c5d0e5b | 11 | static const int DATAS_NUM = 75; |
tsumagari | 6:93f90c5d0e5b | 12 | |
tsumagari | 0:57308daf8dfe | 13 | protected: |
tsumagari | 0:57308daf8dfe | 14 | |
tsumagari | 0:57308daf8dfe | 15 | public: |
tsumagari | 6:93f90c5d0e5b | 16 | string strC,strV; |
tsumagari | 1:6bceac3446ff | 17 | char data[DATAS_NUM]; |
tsumagari | 1:6bceac3446ff | 18 | string strData; |
tsumagari | 1:6bceac3446ff | 19 | int data_count, data_num; |
tsumagari | 6:93f90c5d0e5b | 20 | double cadence, voltage; |
tsumagari | 6:93f90c5d0e5b | 21 | Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx){ |
tsumagari | 0:57308daf8dfe | 22 | for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; |
tsumagari | 6:93f90c5d0e5b | 23 | data_num=0; |
tsumagari | 0:57308daf8dfe | 24 | data_count=0; |
tsumagari | 0:57308daf8dfe | 25 | baud(115200); |
tsumagari | 0:57308daf8dfe | 26 | cadence=0; |
tsumagari | 4:2def7f5f7fed | 27 | voltage=0; |
tsumagari | 6:93f90c5d0e5b | 28 | } |
tsumagari | 6:93f90c5d0e5b | 29 | int checkInt(const char c[]){ |
tsumagari | 6:93f90c5d0e5b | 30 | for(int i = 0; i<strlen(c); i++){ |
tsumagari | 6:93f90c5d0e5b | 31 | if( c[0] == '-' ) continue; |
tsumagari | 6:93f90c5d0e5b | 32 | if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1; |
tsumagari | 6:93f90c5d0e5b | 33 | }return 1; |
tsumagari | 0:57308daf8dfe | 34 | } |
tsumagari | 6:93f90c5d0e5b | 35 | void readData(){ |
tsumagari | 6:93f90c5d0e5b | 36 | if(readable()){ |
tsumagari | 1:6bceac3446ff | 37 | data_count = 0; |
tsumagari | 6:93f90c5d0e5b | 38 | for (int i = 0; i<DATAS_NUM; i++) data[i] = NULL; |
tsumagari | 0:57308daf8dfe | 39 | do{ |
tsumagari | 6:93f90c5d0e5b | 40 | if(readable()) { |
tsumagari | 0:57308daf8dfe | 41 | data[data_count] = getc(); |
tsumagari | 4:2def7f5f7fed | 42 | if(data[data_count] != '\n') data_count++; |
tsumagari | 6:93f90c5d0e5b | 43 | led3 = !led3; |
tsumagari | 0:57308daf8dfe | 44 | } |
tsumagari | 6:93f90c5d0e5b | 45 | }while(data[data_count] != '\n' && data_count<DATAS_NUM); |
tsumagari | 6:93f90c5d0e5b | 46 | strData = data; |
tsumagari | 6:93f90c5d0e5b | 47 | if( int strlength = strData.length() > DATAS_NUM-4 ){ |
tsumagari | 6:93f90c5d0e5b | 48 | // for(int i = 0; i<4; i++){ |
tsumagari | 6:93f90c5d0e5b | 49 | // strC += data[data_count-6+i]; |
tsumagari | 6:93f90c5d0e5b | 50 | // strV += data[data_count-43+i]; |
tsumagari | 6:93f90c5d0e5b | 51 | // } |
tsumagari | 6:93f90c5d0e5b | 52 | // if( checkInt(strC) ) sscanf(strC,"%lf",&cadence); |
tsumagari | 6:93f90c5d0e5b | 53 | // if( checkInt(strV) ) sscanf(strV,"%lf",&voltage); |
tsumagari | 6:93f90c5d0e5b | 54 | |
tsumagari | 6:93f90c5d0e5b | 55 | switch (strData.length()){ |
tsumagari | 6:93f90c5d0e5b | 56 | case DATAS_NUM-3 : |
tsumagari | 6:93f90c5d0e5b | 57 | strData.erase(0,2); |
tsumagari | 6:93f90c5d0e5b | 58 | break; |
tsumagari | 6:93f90c5d0e5b | 59 | case DATAS_NUM-2 : |
tsumagari | 6:93f90c5d0e5b | 60 | strData.erase(0,3); |
tsumagari | 6:93f90c5d0e5b | 61 | break; |
tsumagari | 6:93f90c5d0e5b | 62 | case DATAS_NUM-1 : |
tsumagari | 6:93f90c5d0e5b | 63 | strData.erase(0,4); |
tsumagari | 6:93f90c5d0e5b | 64 | break; |
tsumagari | 6:93f90c5d0e5b | 65 | case DATAS_NUM : |
tsumagari | 6:93f90c5d0e5b | 66 | strData.erase(0,5); |
tsumagari | 1:6bceac3446ff | 67 | } |
tsumagari | 6:93f90c5d0e5b | 68 | strV = strData.substr(27,4); |
tsumagari | 6:93f90c5d0e5b | 69 | strC = strData.substr(64,4); |
tsumagari | 6:93f90c5d0e5b | 70 | if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); |
tsumagari | 6:93f90c5d0e5b | 71 | if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); |
tsumagari | 6:93f90c5d0e5b | 72 | |
tsumagari | 6:93f90c5d0e5b | 73 | cadence /= 6.0; |
tsumagari | 6:93f90c5d0e5b | 74 | voltage *= 0.001; |
tsumagari | 0:57308daf8dfe | 75 | } |
tsumagari | 4:2def7f5f7fed | 76 | } |
tsumagari | 0:57308daf8dfe | 77 | } |
tsumagari | 0:57308daf8dfe | 78 | }; |
tsumagari | 0:57308daf8dfe | 79 | #endif |