回転数計のクラスです。

Dependencies:   mbed

Fork of test_cadenceClass by natsu tsumagari

Committer:
tsumagari
Date:
Sat Feb 18 07:57:27 2017 +0000
Revision:
6:93f90c5d0e5b
Parent:
5:871c2d6c1129
RawSerial?attach

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsumagari 6:93f90c5d0e5b 1 //;2648 ;00 00000 0;168 ;001; 10043 c1;31 10;00 00;00 00;10 63;08 39;I; -012; 0002; 0104;\r\n
tsumagari 6:93f90c5d0e5b 2 //;109 ;00 00000 0;123 ;011; 10008 e4;27 95;00 00;00 00;13 99;08 51;G; -068; -096; -192;
tsumagari 0:57308daf8dfe 3 #ifndef CADENCE_H
tsumagari 0:57308daf8dfe 4 #define CADENCE_H
tsumagari 0:57308daf8dfe 5
tsumagari 0:57308daf8dfe 6 #include "mbed.h"
tsumagari 0:57308daf8dfe 7 #include <string>
tsumagari 6:93f90c5d0e5b 8 DigitalOut led3(LED3);
tsumagari 6:93f90c5d0e5b 9 class Cadence : public RawSerial{
tsumagari 0:57308daf8dfe 10 private:
tsumagari 6:93f90c5d0e5b 11 static const int DATAS_NUM = 75;
tsumagari 6:93f90c5d0e5b 12
tsumagari 0:57308daf8dfe 13 protected:
tsumagari 0:57308daf8dfe 14
tsumagari 0:57308daf8dfe 15 public:
tsumagari 6:93f90c5d0e5b 16 string strC,strV;
tsumagari 1:6bceac3446ff 17 char data[DATAS_NUM];
tsumagari 1:6bceac3446ff 18 string strData;
tsumagari 1:6bceac3446ff 19 int data_count, data_num;
tsumagari 6:93f90c5d0e5b 20 double cadence, voltage;
tsumagari 6:93f90c5d0e5b 21 Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx){
tsumagari 0:57308daf8dfe 22 for(int i=0;i<DATAS_NUM;i++) data[i]= NULL;
tsumagari 6:93f90c5d0e5b 23 data_num=0;
tsumagari 0:57308daf8dfe 24 data_count=0;
tsumagari 0:57308daf8dfe 25 baud(115200);
tsumagari 0:57308daf8dfe 26 cadence=0;
tsumagari 4:2def7f5f7fed 27 voltage=0;
tsumagari 6:93f90c5d0e5b 28 }
tsumagari 6:93f90c5d0e5b 29 int checkInt(const char c[]){
tsumagari 6:93f90c5d0e5b 30 for(int i = 0; i<strlen(c); i++){
tsumagari 6:93f90c5d0e5b 31 if( c[0] == '-' ) continue;
tsumagari 6:93f90c5d0e5b 32 if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1;
tsumagari 6:93f90c5d0e5b 33 }return 1;
tsumagari 0:57308daf8dfe 34 }
tsumagari 6:93f90c5d0e5b 35 void readData(){
tsumagari 6:93f90c5d0e5b 36 if(readable()){
tsumagari 1:6bceac3446ff 37 data_count = 0;
tsumagari 6:93f90c5d0e5b 38 for (int i = 0; i<DATAS_NUM; i++) data[i] = NULL;
tsumagari 0:57308daf8dfe 39 do{
tsumagari 6:93f90c5d0e5b 40 if(readable()) {
tsumagari 0:57308daf8dfe 41 data[data_count] = getc();
tsumagari 4:2def7f5f7fed 42 if(data[data_count] != '\n') data_count++;
tsumagari 6:93f90c5d0e5b 43 led3 = !led3;
tsumagari 0:57308daf8dfe 44 }
tsumagari 6:93f90c5d0e5b 45 }while(data[data_count] != '\n' && data_count<DATAS_NUM);
tsumagari 6:93f90c5d0e5b 46 strData = data;
tsumagari 6:93f90c5d0e5b 47 if( int strlength = strData.length() > DATAS_NUM-4 ){
tsumagari 6:93f90c5d0e5b 48 // for(int i = 0; i<4; i++){
tsumagari 6:93f90c5d0e5b 49 // strC += data[data_count-6+i];
tsumagari 6:93f90c5d0e5b 50 // strV += data[data_count-43+i];
tsumagari 6:93f90c5d0e5b 51 // }
tsumagari 6:93f90c5d0e5b 52 // if( checkInt(strC) ) sscanf(strC,"%lf",&cadence);
tsumagari 6:93f90c5d0e5b 53 // if( checkInt(strV) ) sscanf(strV,"%lf",&voltage);
tsumagari 6:93f90c5d0e5b 54
tsumagari 6:93f90c5d0e5b 55 switch (strData.length()){
tsumagari 6:93f90c5d0e5b 56 case DATAS_NUM-3 :
tsumagari 6:93f90c5d0e5b 57 strData.erase(0,2);
tsumagari 6:93f90c5d0e5b 58 break;
tsumagari 6:93f90c5d0e5b 59 case DATAS_NUM-2 :
tsumagari 6:93f90c5d0e5b 60 strData.erase(0,3);
tsumagari 6:93f90c5d0e5b 61 break;
tsumagari 6:93f90c5d0e5b 62 case DATAS_NUM-1 :
tsumagari 6:93f90c5d0e5b 63 strData.erase(0,4);
tsumagari 6:93f90c5d0e5b 64 break;
tsumagari 6:93f90c5d0e5b 65 case DATAS_NUM :
tsumagari 6:93f90c5d0e5b 66 strData.erase(0,5);
tsumagari 1:6bceac3446ff 67 }
tsumagari 6:93f90c5d0e5b 68 strV = strData.substr(27,4);
tsumagari 6:93f90c5d0e5b 69 strC = strData.substr(64,4);
tsumagari 6:93f90c5d0e5b 70 if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage);
tsumagari 6:93f90c5d0e5b 71 if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence);
tsumagari 6:93f90c5d0e5b 72
tsumagari 6:93f90c5d0e5b 73 cadence /= 6.0;
tsumagari 6:93f90c5d0e5b 74 voltage *= 0.001;
tsumagari 0:57308daf8dfe 75 }
tsumagari 4:2def7f5f7fed 76 }
tsumagari 0:57308daf8dfe 77 }
tsumagari 0:57308daf8dfe 78 };
tsumagari 0:57308daf8dfe 79 #endif