回転数計のクラスです。
Dependencies: mbed
Fork of test_cadenceClass by
Cadence.h
- Committer:
- tsumagari
- Date:
- 2017-01-28
- Revision:
- 5:871c2d6c1129
- Parent:
- 4:2def7f5f7fed
- Child:
- 6:93f90c5d0e5b
File content as of revision 5:871c2d6c1129:
#ifndef CADENCE_H #define CADENCE_H #include "mbed.h" #include "BufferedSoftSerial.h" #include <string> class Cadence : public /*BufferedSoft*/RawSerial{ private: static const int DATAS_NUM = 69 + 4 + 1; //経過時間の文字数は最大4 //;1816; 00 00000 0;168 ;001; 10133 e9;34 00;00 0e;00 00;10 70;06 89;G; -005; -009; -006; //2+4+67+2(\r\n) // -- -- ---- protected: public: char strC[4],strV[4]; char data[DATAS_NUM]; string strData; int data_count, data_num; double cadence, voltage, safeflag; int cadence_i, voltage_i; Cadence(PinName tx, PinName rx, const char* name = NULL) : /*BufferedSoft*/RawSerial(tx, rx, NULL){ for(int i=0;i<DATAS_NUM;i++) data[i]= NULL; data_count=0; baud(115200); cadence=0; voltage=0; strC[0] = '0'; strV[0] = '0'; } void readData(){ //Ticker で定期的に呼び出して値を更新 if(readable()){ data_count = 0; do{ if(readable()){ data[data_count] = getc(); if(data[data_count] != '\n') data_count++; } }while( data[data_count-1] != '\r' && data_count < DATAS_NUM ); if( data_count > 71 ) { for(int i = 0; i<4; i++){ strC[i] = data[data_count - 6 + i]; // 7 = 5 + 1 pc.putc(strC[i]); strV[i] = data[data_count - 43 + i]; // 44 = 42 + 1 } sscanf(strC,"%4d",&cadence_i); sscanf(strV,"%4d",&voltage_i); cadence = cadence_i/6.0; voltage = voltage_i/1000.0; } } } }; #endif