2017年度の製作を開始します。
Dependencies: BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1
Fork of keiki2016ver5 by
Cadence.h@35:4c02c7ff81ab, 2017-02-18 (annotated)
- Committer:
- tsumagari
- Date:
- Sat Feb 18 06:52:28 2017 +0000
- Revision:
- 35:4c02c7ff81ab
- Parent:
- 29:2da9b8d03c0b
- Child:
- 36:b4b9b67a770d
Cadence.h?checkInt???
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tsumagari | 15:6966299bea4c | 1 | #ifndef CADENCE_H |
tsumagari | 15:6966299bea4c | 2 | #define CADENCE_H |
tsumagari | 15:6966299bea4c | 3 | |
tsumagari | 15:6966299bea4c | 4 | #include "mbed.h" |
tsumagari | 15:6966299bea4c | 5 | #include <string> |
tsumagari | 15:6966299bea4c | 6 | |
tsumagari | 21:8802034b7810 | 7 | class Cadence : public RawSerial{ |
tsumagari | 15:6966299bea4c | 8 | private: |
tsumagari | 15:6966299bea4c | 9 | static const int DATAS_NUM = 75; |
tsumagari | 15:6966299bea4c | 10 | |
tsumagari | 15:6966299bea4c | 11 | protected: |
tsumagari | 15:6966299bea4c | 12 | |
tsumagari | 15:6966299bea4c | 13 | public: |
tsumagari | 15:6966299bea4c | 14 | string strC,strV; |
tsumagari | 15:6966299bea4c | 15 | char data[DATAS_NUM]; |
tsumagari | 15:6966299bea4c | 16 | string strData; |
tsumagari | 15:6966299bea4c | 17 | int data_count, data_num; |
tsumagari | 15:6966299bea4c | 18 | double cadence, voltage; |
tsumagari | 21:8802034b7810 | 19 | Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx){ |
tsumagari | 15:6966299bea4c | 20 | for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; |
tsumagari | 15:6966299bea4c | 21 | data_num=0; |
tsumagari | 15:6966299bea4c | 22 | data_count=0; |
tsumagari | 15:6966299bea4c | 23 | baud(115200); |
tsumagari | 15:6966299bea4c | 24 | cadence=0; |
tsumagari | 15:6966299bea4c | 25 | voltage=0; |
tsumagari | 15:6966299bea4c | 26 | } |
tsumagari | 35:4c02c7ff81ab | 27 | int checkInt(const char c[4]){ |
tsumagari | 35:4c02c7ff81ab | 28 | for(int i = 0; i<4; i++){ |
tsumagari | 35:4c02c7ff81ab | 29 | if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1; |
tsumagari | 35:4c02c7ff81ab | 30 | }return 1; |
tsumagari | 35:4c02c7ff81ab | 31 | } |
tsumagari | 29:2da9b8d03c0b | 32 | void readData(){ |
tsumagari | 26:50272431cd1e | 33 | if(readable()){ |
tsumagari | 15:6966299bea4c | 34 | data_count = 0; |
tsumagari | 15:6966299bea4c | 35 | data_num = 0; |
tsumagari | 15:6966299bea4c | 36 | cadence = 0; |
tsumagari | 15:6966299bea4c | 37 | do{ |
tsumagari | 15:6966299bea4c | 38 | if(readable()) { |
tsumagari | 15:6966299bea4c | 39 | data[data_count] = getc(); |
tsumagari | 15:6966299bea4c | 40 | data_count++; |
tsumagari | 15:6966299bea4c | 41 | } |
tsumagari | 15:6966299bea4c | 42 | }while(data[data_count-1] != '\n'); |
tsumagari | 15:6966299bea4c | 43 | strData = data; |
tsumagari | 26:50272431cd1e | 44 | if( int strlength = strData.length() > DATAS_NUM-4 ){ |
tsumagari | 26:50272431cd1e | 45 | // for(int i = 0; i<4; i++){ |
tsumagari | 26:50272431cd1e | 46 | // strC += data[data_count-6+i]; |
tsumagari | 26:50272431cd1e | 47 | // strV += data[data_count-43+i]; |
tsumagari | 26:50272431cd1e | 48 | // } |
tsumagari | 15:6966299bea4c | 49 | switch (strData.length()){ |
tsumagari | 15:6966299bea4c | 50 | case DATAS_NUM-3 : |
tsumagari | 15:6966299bea4c | 51 | strData.erase(0,2); |
tsumagari | 15:6966299bea4c | 52 | break; |
tsumagari | 15:6966299bea4c | 53 | case DATAS_NUM-2 : |
tsumagari | 15:6966299bea4c | 54 | strData.erase(0,3); |
tsumagari | 15:6966299bea4c | 55 | break; |
tsumagari | 15:6966299bea4c | 56 | case DATAS_NUM-1 : |
tsumagari | 15:6966299bea4c | 57 | strData.erase(0,4); |
tsumagari | 15:6966299bea4c | 58 | break; |
tsumagari | 15:6966299bea4c | 59 | case DATAS_NUM : |
tsumagari | 15:6966299bea4c | 60 | strData.erase(0,5); |
tsumagari | 15:6966299bea4c | 61 | } |
tsumagari | 15:6966299bea4c | 62 | strV = strData.substr(26,4); |
tsumagari | 15:6966299bea4c | 63 | strC = strData.substr(64,4); |
tsumagari | 35:4c02c7ff81ab | 64 | |
tsumagari | 35:4c02c7ff81ab | 65 | if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); |
tsumagari | 35:4c02c7ff81ab | 66 | if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); |
tsumagari | 26:50272431cd1e | 67 | cadence /= 6.0; |
tsumagari | 26:50272431cd1e | 68 | voltage *= 0.001; |
tsumagari | 15:6966299bea4c | 69 | } |
tsumagari | 26:50272431cd1e | 70 | } |
tsumagari | 15:6966299bea4c | 71 | } |
tsumagari | 15:6966299bea4c | 72 | }; |
tsumagari | 15:6966299bea4c | 73 | #endif |