2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Cadence.h@37:34aaa1951390, 2017-02-19 (annotated)
- 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?
User | Revision | Line number | New 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 |