2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
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