2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Cadence.h@78:bd7ac42aa543, 2017-07-15 (annotated)
- Committer:
- tsumagari
- Date:
- Sat Jul 15 00:45:45 2017 +0000
- Branch:
- SDandCadenceThread
- Revision:
- 78:bd7ac42aa543
- Parent:
- 42:73c3862e4c12
debug????????pc.printf?????????????????????debug?????????
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 | 41:1bd730c4840d | 9 | Timer cadenceT; |
tsumagari | 42:73c3862e4c12 | 10 | RawSerial pc(USBTX,USBRX); |
tsumagari | 41:1bd730c4840d | 11 | class Cadence : public RawSerial |
tsumagari | 41:1bd730c4840d | 12 | { |
tsumagari | 41:1bd730c4840d | 13 | private: |
tsumagari | 41:1bd730c4840d | 14 | static const int DATAS_NUM = 75,BuffNum = 500; |
tsumagari | 41:1bd730c4840d | 15 | |
tsumagari | 41:1bd730c4840d | 16 | protected: |
tsumagari | 41:1bd730c4840d | 17 | |
tsumagari | 41:1bd730c4840d | 18 | public: |
tsumagari | 42:73c3862e4c12 | 19 | char strV[5]; |
tsumagari | 42:73c3862e4c12 | 20 | char strC[5]; |
tsumagari | 37:34aaa1951390 | 21 | char data[DATAS_NUM],myBuff[BuffNum],c; |
tsumagari | 15:6966299bea4c | 22 | string strData; |
tsumagari | 42:73c3862e4c12 | 23 | int dataCount, data_num, strlength; |
tsumagari | 37:34aaa1951390 | 24 | double cadence, voltage; |
tsumagari | 41:1bd730c4840d | 25 | Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx) { |
tsumagari | 41:1bd730c4840d | 26 | for(int i=0; i<DATAS_NUM; i++) data[i]= '\0'; |
tsumagari | 41:1bd730c4840d | 27 | for(int i = 0; i<BuffNum; i++) myBuff[i] = '\0'; |
tsumagari | 37:34aaa1951390 | 28 | data_num=0; |
tsumagari | 41:1bd730c4840d | 29 | dataCount=0; |
tsumagari | 15:6966299bea4c | 30 | baud(115200); |
tsumagari | 15:6966299bea4c | 31 | cadence=0; |
tsumagari | 15:6966299bea4c | 32 | voltage=0; |
tsumagari | 42:73c3862e4c12 | 33 | strcpy(strC,"0000"); |
tsumagari | 42:73c3862e4c12 | 34 | strcpy(strV,"0000"); |
tsumagari | 41:1bd730c4840d | 35 | cadenceT.start(); |
tsumagari | 42:73c3862e4c12 | 36 | attach(this, &Cadence::readData, RawSerial::RxIrq); |
tsumagari | 15:6966299bea4c | 37 | } |
tsumagari | 41:1bd730c4840d | 38 | int checkInt(const char c[]) { |
tsumagari | 41:1bd730c4840d | 39 | for(int i = 0; i<strlen(c); i++) { |
tsumagari | 37:34aaa1951390 | 40 | if( c[0] == '-' ) continue; |
tsumagari | 37:34aaa1951390 | 41 | if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1; |
tsumagari | 41:1bd730c4840d | 42 | } |
tsumagari | 41:1bd730c4840d | 43 | return 1; |
tsumagari | 34:c46f2f687c7b | 44 | } |
tsumagari | 41:1bd730c4840d | 45 | void readData() { |
tsumagari | 41:1bd730c4840d | 46 | if(readable()) { |
tsumagari | 42:73c3862e4c12 | 47 | led3 = 1; |
tsumagari | 41:1bd730c4840d | 48 | cadenceT.reset(); |
tsumagari | 41:1bd730c4840d | 49 | cadenceT.start(); |
tsumagari | 41:1bd730c4840d | 50 | dataCount = 0; |
tsumagari | 41:1bd730c4840d | 51 | do { |
tsumagari | 41:1bd730c4840d | 52 | myBuff[dataCount] = getc(); |
tsumagari | 41:1bd730c4840d | 53 | dataCount++; |
tsumagari | 42:73c3862e4c12 | 54 | } while(cadenceT.read_ms()<10 && myBuff[dataCount-1] != '\n'); |
tsumagari | 42:73c3862e4c12 | 55 | if(dataCount < DATAS_NUM-4) return; |
tsumagari | 41:1bd730c4840d | 56 | } |
tsumagari | 41:1bd730c4840d | 57 | if(dataCount != 0) { |
tsumagari | 42:73c3862e4c12 | 58 | // led3 = 1;//Ticker内でTimer&stringを使うとフリーズ |
tsumagari | 42:73c3862e4c12 | 59 | // strData = "hello"; |
tsumagari | 42:73c3862e4c12 | 60 | // pc.printf("%s\n\r",strData.c_str()); |
tsumagari | 42:73c3862e4c12 | 61 | // for(int i = 0; i<strlen(myBuff); i++) { |
tsumagari | 42:73c3862e4c12 | 62 | // pc.printf("mybuff[%d]:%c\n\r",i,myBuff[i]); |
tsumagari | 42:73c3862e4c12 | 63 | // strData += myBuff[i]; |
tsumagari | 42:73c3862e4c12 | 64 | // led3 = 0; |
tsumagari | 37:34aaa1951390 | 65 | // } |
tsumagari | 42:73c3862e4c12 | 66 | // strData = string(myBuff,DATAS_NUM); |
tsumagari | 42:73c3862e4c12 | 67 | strlength = strlen(myBuff)/*strData.length()*/; |
tsumagari | 42:73c3862e4c12 | 68 | if( strlength > DATAS_NUM-4 && strlength <= DATAS_NUM ) { |
tsumagari | 42:73c3862e4c12 | 69 | for(int i = 0; i<4; i++){ |
tsumagari | 42:73c3862e4c12 | 70 | strC[i] = myBuff[strlength-7+i]; |
tsumagari | 42:73c3862e4c12 | 71 | strV[i] = myBuff[strlength-44+i]; |
tsumagari | 42:73c3862e4c12 | 72 | } |
tsumagari | 42:73c3862e4c12 | 73 | if( checkInt(strC) ) { |
tsumagari | 42:73c3862e4c12 | 74 | sscanf(strC,"%lf",&cadence); |
tsumagari | 42:73c3862e4c12 | 75 | cadence /= 6.0; |
tsumagari | 42:73c3862e4c12 | 76 | } |
tsumagari | 42:73c3862e4c12 | 77 | if( checkInt(strV) ) { |
tsumagari | 42:73c3862e4c12 | 78 | sscanf(strV,"%lf",&voltage); |
tsumagari | 42:73c3862e4c12 | 79 | voltage *= 0.001; |
tsumagari | 42:73c3862e4c12 | 80 | } |
tsumagari | 42:73c3862e4c12 | 81 | // switch (strlength) { |
tsumagari | 42:73c3862e4c12 | 82 | // case DATAS_NUM-3 : |
tsumagari | 42:73c3862e4c12 | 83 | // strData.erase(0,2); |
tsumagari | 42:73c3862e4c12 | 84 | // break; |
tsumagari | 42:73c3862e4c12 | 85 | // case DATAS_NUM-2 : |
tsumagari | 42:73c3862e4c12 | 86 | // strData.erase(0,3); |
tsumagari | 42:73c3862e4c12 | 87 | // break; |
tsumagari | 42:73c3862e4c12 | 88 | // case DATAS_NUM-1 : |
tsumagari | 42:73c3862e4c12 | 89 | // strData.erase(0,4); |
tsumagari | 42:73c3862e4c12 | 90 | // break; |
tsumagari | 42:73c3862e4c12 | 91 | // case DATAS_NUM : |
tsumagari | 42:73c3862e4c12 | 92 | // strData.erase(0,5); |
tsumagari | 42:73c3862e4c12 | 93 | // } |
tsumagari | 42:73c3862e4c12 | 94 | // strV = strData.substr(27,4); |
tsumagari | 42:73c3862e4c12 | 95 | // strC = strData.substr(64,4); |
tsumagari | 42:73c3862e4c12 | 96 | // if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); |
tsumagari | 42:73c3862e4c12 | 97 | // if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); |
tsumagari | 37:34aaa1951390 | 98 | |
tsumagari | 42:73c3862e4c12 | 99 | // pc.printf("%d\n\r",strlen(strV)); |
tsumagari | 41:1bd730c4840d | 100 | }//strlength |
tsumagari | 42:73c3862e4c12 | 101 | pc.printf("\n\rmyBuff:%s(%d)\n\r",myBuff,strlength); |
tsumagari | 42:73c3862e4c12 | 102 | pc.printf("strC:%s\n\r",strC); |
tsumagari | 42:73c3862e4c12 | 103 | for (int i = 0; i < strlength; i++) myBuff[i] = '\0'; |
tsumagari | 41:1bd730c4840d | 104 | dataCount = 0; |
tsumagari | 41:1bd730c4840d | 105 | }//if(dataCount != 0) |
tsumagari | 42:73c3862e4c12 | 106 | led3 = 0; |
tsumagari | 41:1bd730c4840d | 107 | }//readData |
tsumagari | 15:6966299bea4c | 108 | }; |
tsumagari | 15:6966299bea4c | 109 | #endif |