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

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Cadence.h

Committer:
tsumagari
Date:
2017-02-15
Branch:
noThread2017ver.
Revision:
28:02e21f1fbe3d
Parent:
27:d2955f29a3aa

File content as of revision 28:02e21f1fbe3d:

#ifndef CADENCE_H
#define CADENCE_H

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

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';
    }
    void readData(){ //Ticker で定期的に呼び出して値を更新
      if(readable()){ 
        data_count = 0;
        do{
            if(readable()){
                data[data_count] = getc();
                if(data[data_count] != '\n') data_count++;
                else break;
            }
        }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
                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