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

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Committer:
tsumagari
Date:
Sat Mar 18 03:13:36 2017 +0000
Branch:
Thread-gyogetsuMPU
Revision:
41:1bd730c4840d
Parent:
37:34aaa1951390
Child:
42:73c3862e4c12
Cadence.h?readData??????ver.???myBuff?string??????????????

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