回転数計のクラスです。
Dependencies: mbed
Fork of test_cadenceClass by
Diff: Cadence.h
- Revision:
- 1:6bceac3446ff
- Parent:
- 0:57308daf8dfe
- Child:
- 2:b492f029a2f4
--- a/Cadence.h Wed Nov 23 04:40:06 2016 +0000 +++ b/Cadence.h Wed Nov 23 05:31:01 2016 +0000 @@ -4,22 +4,17 @@ #include "mbed.h" #include <string> -#define CADENCE_READ_TIME 0.1 - -//Serial cadenceTwe(p13,p14); -Ticker cadenceReadTicker; - class Cadence : public Serial{ private: static const int DATAS_NUM = 74; - int data_count, data_num; - char data[DATAS_NUM]; - string strData; - int gomi; protected: public: + string strC,strV; + char data[DATAS_NUM]; + string strData; + int data_count, data_num; double cadence, cadenceV; Cadence(PinName tx, PinName rx, const char* name = NULL) : Serial(tx, rx, NULL){ for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; @@ -29,39 +24,38 @@ cadence=0; cadenceV=0; } -// void Init(){ -// for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; -// data_num=0; -// data_count=0; -// baud(115200); -// } void cadenceRead(){ //Ticker で定期的に呼び出して値を更新 + data_count = 0; + data_num = 0; do{ if(readable()) { data[data_count] = getc(); data_count++; } - }while(data[--data_count] == '\r'); - + }while(data[data_count-1] != '\r' || data[data_count-1] != '\n'); + if(data_count > DATAS_NUM-4 ){ strData = data; + switch (strData.length()){ + case DATAS_NUM-3 : + strData.erase(0,2); + break; + case DATAS_NUM-2 : + strData.erase(0,3); + break; + case DATAS_NUM-1 : + strData.erase(0,4); + break; + case DATAS_NUM : + strData.erase(0,5); + } + strV = strData.substr(27,4); + strC = strData.substr(64,4); + sscanf(strV.c_str(),"%lf",&cadenceV); + sscanf(strC.c_str(),"%lf",&cadence); + cadence /= 6.0; + cadenceV *= 0.001; } - switch (strData.length()){ - case DATAS_NUM-3 : - strData.erase(0,1); - break; - case DATAS_NUM-2 : - strData.erase(0,2); - break; - case DATAS_NUM-1 : - strData.erase(0,3); - break; - case DATAS_NUM : - strData.erase(0,4); - } - sscanf(strData.substr(27,4).c_str(),"%f",&cadenceV); - sscanf(strData.substr(64,4).c_str(),"%f",&cadence); - cadence /= 6.0; } }; #endif \ No newline at end of file