natsu tsumagari
/
test_cadenceClass
回転数計のクラスです。
Diff: main.cpp
- Revision:
- 0:57308daf8dfe
- Child:
- 1:6bceac3446ff
diff -r 000000000000 -r 57308daf8dfe main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 23 04:40:06 2016 +0000 @@ -0,0 +1,89 @@ +#include "mbed.h" +#include <string> +//#include "Cadence.h" + +DigitalOut myled(LED1); +Ticker cadenceTicker; +Serial pc(USBTX,USBRX); //for debug + +class Cadence : public Serial{ + private: + static const int DATAS_NUM = 74; + string strData; + int gomi; + + protected: + + public: + char data[DATAS_NUM]; + int data_count, data_num; + double cadence, cadenceV; + string strV,strC; + + Cadence(PinName tx, PinName rx, const char* name = NULL) : Serial(tx, rx, NULL){ + for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; + data_num=0; + data_count=0; + baud(115200); + 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-1] != '\r'); + + if(data_count > DATAS_NUM-4 ){ + strData = data; + 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); + } + strV = strData.substr(27,4); + strC = strData.substr(64,4); + sscanf(strC.c_str(),"%lf",&cadence); + sscanf(strV.c_str(),"%lf",&cadenceV); + cadence /= 6.0; + cadenceV *=0.001; + } + } +}; + + + +Cadence cadence(p13,p14); + +int main() { + pc.baud(115200); + while(1) { + myled = 1; + wait(0.2); + myled = 0; + wait(0.2); + pc.printf("test\n\r"); + pc.printf("cadence: %f\n\r",cadence.cadence); + pc.printf("voltage: %f\n\r",cadence.cadenceV); + pc.printf("%d,\n\r",cadence.data_count); + cadence.cadenceRead(); + } +}