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

Dependencies:   BufferedSoftSerial2 SDFileSystem-RTOS mbed mbed-rtos INA226_ver1

Fork of keiki2016ver5 by albatross

Committer:
tsumagari
Date:
Fri Jun 30 09:52:07 2017 +0000
Branch:
SDandCadenceThread
Revision:
77:ba2dac12ce56
Parent:
42:73c3862e4c12
7/1TF?no pc.printf

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 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