2017年度の製作を開始します。

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Committer:
tsumagari
Date:
Sun Feb 19 13:20:11 2017 +0000
Branch:
Thread-gyogetsuMPU
Revision:
37:34aaa1951390
Parent:
34:c46f2f687c7b
Child:
41:1bd730c4840d

        

Who changed what in which revision?

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