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

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Cadence.h

Committer:
tsumagari
Date:
2017-02-18
Branch:
Thread-gyogetsuMPU
Revision:
34:c46f2f687c7b
Parent:
27:d2955f29a3aa
Child:
37:34aaa1951390

File content as of revision 34:c46f2f687c7b:

#ifndef CADENCE_H
#define CADENCE_H

#include "mbed.h"
//#include "BufferedSoftSerial.h"
#include <string>

DigitalOut led3(LED3);
double cadence;

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 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';
    }
    int checkInt(char c[]){
        for(int i = 0; i< sizeof(c)/sizeof(c[0]); i++){
            if( c[i] - '0' >9 || c[i] - '0' < 0 ) return -1;
        }
        return 1;
    }
    void readData(){ //Ticker で定期的に呼び出して値を更新
//      if(readable()){ 
        data_count = 0;
        do{
            if(readable()){
                data[data_count] = getc();
                if(data[data_count] != '\n') data_count++;
                led3 = !led3;
            }
        }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]; // 6 = 5 + 1
                strV[i] = data[data_count - 43 + i]; // 43 = 42 + 1
            }
            if(checkInt(strC)) sscanf(strC,"%4d",&cadence_i);
            if(checkInt(strV)) sscanf(strV,"%4d",&voltage_i);
            cadence = cadence_i/6.0;
            voltage = voltage_i/1000.0;
        }
//      }
    }
};
#endif