2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Cadence.h@17:95aa2ab2b777, 2016-12-17 (annotated)
- Committer:
- tsumagari
- Date:
- Sat Dec 17 07:54:06 2016 +0000
- Branch:
- fasterCadence
- Revision:
- 17:95aa2ab2b777
- Parent:
- 16:22aae833bdae
cadence.h??????;
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 | 16:22aae833bdae | 5 | #include "BufferedSoftSerial.h" |
tsumagari | 15:6966299bea4c | 6 | #include <string> |
tsumagari | 15:6966299bea4c | 7 | |
tsumagari | 16:22aae833bdae | 8 | class Cadence : public BufferedSoftSerial{ |
tsumagari | 15:6966299bea4c | 9 | private: |
tsumagari | 15:6966299bea4c | 10 | static const int DATAS_NUM = 75; |
tsumagari | 15:6966299bea4c | 11 | |
tsumagari | 15:6966299bea4c | 12 | protected: |
tsumagari | 15:6966299bea4c | 13 | |
tsumagari | 15:6966299bea4c | 14 | public: |
tsumagari | 15:6966299bea4c | 15 | string strC,strV; |
tsumagari | 17:95aa2ab2b777 | 16 | char charC[4],charV[4]; |
tsumagari | 15:6966299bea4c | 17 | char data[DATAS_NUM]; |
tsumagari | 15:6966299bea4c | 18 | string strData; |
tsumagari | 15:6966299bea4c | 19 | int data_count, data_num; |
tsumagari | 15:6966299bea4c | 20 | double cadence, voltage; |
tsumagari | 16:22aae833bdae | 21 | Cadence(PinName tx, PinName rx) : BufferedSoftSerial(tx, rx){ |
tsumagari | 15:6966299bea4c | 22 | for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; |
tsumagari | 15:6966299bea4c | 23 | data_num=0; |
tsumagari | 15:6966299bea4c | 24 | data_count=0; |
tsumagari | 16:22aae833bdae | 25 | baud(9600); |
tsumagari | 15:6966299bea4c | 26 | cadence=0; |
tsumagari | 15:6966299bea4c | 27 | voltage=0; |
tsumagari | 15:6966299bea4c | 28 | } |
tsumagari | 15:6966299bea4c | 29 | void readData(){ //Ticker で定期的に呼び出して値を更新 |
tsumagari | 15:6966299bea4c | 30 | data_count = 0; |
tsumagari | 15:6966299bea4c | 31 | data_num = 0; |
tsumagari | 15:6966299bea4c | 32 | do{ |
tsumagari | 15:6966299bea4c | 33 | if(readable()) { |
tsumagari | 15:6966299bea4c | 34 | data[data_count] = getc(); |
tsumagari | 15:6966299bea4c | 35 | data_count++; |
tsumagari | 15:6966299bea4c | 36 | } |
tsumagari | 15:6966299bea4c | 37 | }while(data[data_count-1] != '\n'); |
tsumagari | 15:6966299bea4c | 38 | |
tsumagari | 16:22aae833bdae | 39 | if(data_count-1 > DATAS_NUM-4 ){ |
tsumagari | 17:95aa2ab2b777 | 40 | // strData = data; |
tsumagari | 17:95aa2ab2b777 | 41 | // switch (strData.length()){ |
tsumagari | 17:95aa2ab2b777 | 42 | switch(data_count-1){ |
tsumagari | 15:6966299bea4c | 43 | case DATAS_NUM-3 : |
tsumagari | 17:95aa2ab2b777 | 44 | // strData.erase(0,2); |
tsumagari | 17:95aa2ab2b777 | 45 | for(int i=0; i<4; i++){ |
tsumagari | 17:95aa2ab2b777 | 46 | charV[i] = data[26+2]; |
tsumagari | 17:95aa2ab2b777 | 47 | charC[i] = data[64+2]; |
tsumagari | 17:95aa2ab2b777 | 48 | } |
tsumagari | 15:6966299bea4c | 49 | break; |
tsumagari | 15:6966299bea4c | 50 | case DATAS_NUM-2 : |
tsumagari | 17:95aa2ab2b777 | 51 | // strData.erase(0,3); |
tsumagari | 17:95aa2ab2b777 | 52 | for(int i=0; i<4; i++){ |
tsumagari | 17:95aa2ab2b777 | 53 | charV[i] = data[26+3]; |
tsumagari | 17:95aa2ab2b777 | 54 | charC[i] = data[64+3]; |
tsumagari | 17:95aa2ab2b777 | 55 | } |
tsumagari | 15:6966299bea4c | 56 | break; |
tsumagari | 15:6966299bea4c | 57 | case DATAS_NUM-1 : |
tsumagari | 15:6966299bea4c | 58 | strData.erase(0,4); |
tsumagari | 17:95aa2ab2b777 | 59 | for(int i=0; i<4; i++){ |
tsumagari | 17:95aa2ab2b777 | 60 | charV[i] = data[26+4]; |
tsumagari | 17:95aa2ab2b777 | 61 | charC[i] = data[64+4]; |
tsumagari | 17:95aa2ab2b777 | 62 | } |
tsumagari | 15:6966299bea4c | 63 | break; |
tsumagari | 15:6966299bea4c | 64 | case DATAS_NUM : |
tsumagari | 17:95aa2ab2b777 | 65 | // strData.erase(0,5); |
tsumagari | 17:95aa2ab2b777 | 66 | for(int i=0; i<4; i++){ |
tsumagari | 17:95aa2ab2b777 | 67 | charV[i] = data[26+5]; |
tsumagari | 17:95aa2ab2b777 | 68 | charC[i] = data[64+5]; |
tsumagari | 17:95aa2ab2b777 | 69 | } |
tsumagari | 15:6966299bea4c | 70 | } |
tsumagari | 17:95aa2ab2b777 | 71 | // strV = strData.substr(26,4); |
tsumagari | 17:95aa2ab2b777 | 72 | // strC = strData.substr(64,4); |
tsumagari | 17:95aa2ab2b777 | 73 | // sscanf(strV.c_str(),"%lf",&voltage); |
tsumagari | 17:95aa2ab2b777 | 74 | // sscanf(strC.c_str(),"%lf",&cadence); |
tsumagari | 17:95aa2ab2b777 | 75 | |
tsumagari | 17:95aa2ab2b777 | 76 | sscanf(charC,"%lf",&cadence); |
tsumagari | 17:95aa2ab2b777 | 77 | sscanf(charV,"%lf",&voltage); |
tsumagari | 16:22aae833bdae | 78 | cadence /= 6.0; |
tsumagari | 16:22aae833bdae | 79 | voltage *= 0.001; |
tsumagari | 15:6966299bea4c | 80 | } |
tsumagari | 15:6966299bea4c | 81 | } |
tsumagari | 15:6966299bea4c | 82 | }; |
tsumagari | 15:6966299bea4c | 83 | #endif |