2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Cadence.h
- Committer:
- tsumagari
- Date:
- 2016-12-17
- Branch:
- fasterCadence
- Revision:
- 17:95aa2ab2b777
- Parent:
- 16:22aae833bdae
File content as of revision 17:95aa2ab2b777:
#ifndef CADENCE_H #define CADENCE_H #include "mbed.h" #include "BufferedSoftSerial.h" #include <string> class Cadence : public BufferedSoftSerial{ private: static const int DATAS_NUM = 75; protected: public: string strC,strV; char charC[4],charV[4]; char data[DATAS_NUM]; string strData; int data_count, data_num; double cadence, voltage; Cadence(PinName tx, PinName rx) : BufferedSoftSerial(tx, rx){ for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; data_num=0; data_count=0; baud(9600); cadence=0; voltage=0; } void readData(){ //Ticker で定期的に呼び出して値を更新 data_count = 0; data_num = 0; do{ if(readable()) { data[data_count] = getc(); data_count++; } }while(data[data_count-1] != '\n'); if(data_count-1 > DATAS_NUM-4 ){ // strData = data; // switch (strData.length()){ switch(data_count-1){ case DATAS_NUM-3 : // strData.erase(0,2); for(int i=0; i<4; i++){ charV[i] = data[26+2]; charC[i] = data[64+2]; } break; case DATAS_NUM-2 : // strData.erase(0,3); for(int i=0; i<4; i++){ charV[i] = data[26+3]; charC[i] = data[64+3]; } break; case DATAS_NUM-1 : strData.erase(0,4); for(int i=0; i<4; i++){ charV[i] = data[26+4]; charC[i] = data[64+4]; } break; case DATAS_NUM : // strData.erase(0,5); for(int i=0; i<4; i++){ charV[i] = data[26+5]; charC[i] = data[64+5]; } } // strV = strData.substr(26,4); // strC = strData.substr(64,4); // sscanf(strV.c_str(),"%lf",&voltage); // sscanf(strC.c_str(),"%lf",&cadence); sscanf(charC,"%lf",&cadence); sscanf(charV,"%lf",&voltage); cadence /= 6.0; voltage *= 0.001; } } }; #endif