2017年度の製作を開始します。
Dependencies: BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1
Fork of keiki2016ver5 by
Cadence.h
- Committer:
- tsumagari
- Date:
- 2017-03-18
- Branch:
- Thread-gyogetsuMPU
- Revision:
- 41:1bd730c4840d
- Parent:
- 37:34aaa1951390
- Child:
- 42:73c3862e4c12
File content as of revision 41:1bd730c4840d:
//;2648 ;00 00000 0;168 ;001; 10043 c1;31 10;00 00;00 00;10 63;08 39;I; -012; 0002; 0104;\r\n //;109 ;00 00000 0;123 ;011; 10008 e4;27 95;00 00;00 00;13 99;08 51;G; -068; -096; -192; #ifndef CADENCE_H #define CADENCE_H #include "mbed.h" #include <string> DigitalOut led3(LED3); Timer cadenceT; class Cadence : public RawSerial { private: static const int DATAS_NUM = 75,BuffNum = 500; protected: public: string strC,strV; char data[DATAS_NUM],myBuff[BuffNum],c; string strData; int dataCount, data_num; double cadence, voltage; Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx) { for(int i=0; i<DATAS_NUM; i++) data[i]= '\0'; for(int i = 0; i<BuffNum; i++) myBuff[i] = '\0'; data_num=0; dataCount=0; baud(115200); cadence=0; voltage=0; cadenceT.start(); // attach(this, &Cadence::readData, RawSerial::RxIrq); } int checkInt(const char c[]) { for(int i = 0; i<strlen(c); i++) { if( c[0] == '-' ) continue; if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1; } return 1; } void readData() { if(readable()) { cadenceT.reset(); cadenceT.start(); dataCount = 0; do { myBuff[dataCount] = getc(); dataCount++; } while(cadenceT.read_us()<1 || myBuff[dataCount-1] != '\n'); } if(dataCount != 0) { dataCount = 0; led3 = 1; for(int i = 0; i< strlen(myBuff); i ++) strData += myBuff[i]; //strData = string(myBuff,DATAS_NUM); if( int strlength = strData.length() > DATAS_NUM-4 && strlength < DATAS_NUM ) { // for(int i = 0; i<4; i++){ // strC += data[dataCount-6+i]; // strV += data[dataCount-43+i]; // } // if( checkInt(strC) ) sscanf(strC,"%lf",&cadence); // if( checkInt(strV) ) sscanf(strV,"%lf",&voltage); switch (strlength) { 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); if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); cadence /= 6.0; voltage *= 0.001; }//strlength // led3 = 0; for (int i = 0; i < strlen(myBuff); i++) myBuff[i] = '\0'; dataCount = 0; }//if(dataCount != 0) }//readData }; #endif