2018年度計器mbed用プログラム
Dependencies: BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS
Fork of keiki2017 by
Revision 41:1bd730c4840d, committed 2017-03-18
- Comitter:
- tsumagari
- Date:
- Sat Mar 18 03:13:36 2017 +0000
- Branch:
- Thread-gyogetsuMPU
- Parent:
- 40:f15c11485e95
- Child:
- 42:73c3862e4c12
- Commit message:
- Cadence.h?readData??????ver.???myBuff?string??????????????
Changed in this revision
--- a/Cadence.h Sun Mar 12 10:56:54 2017 +0000 +++ b/Cadence.h Sat Mar 18 03:13:36 2017 +0000 @@ -6,92 +6,87 @@ #include "mbed.h" #include <string> DigitalOut led3(LED3); -class Cadence : public RawSerial{ - private: - static const int DATAS_NUM = 75,BuffNum = 10000; - - protected: - - public: +Timer cadenceT; +class Cadence : public RawSerial +{ +private: + static const int DATAS_NUM = 75,BuffNum = 500; + +protected: + +public: string strC,strV; char data[DATAS_NUM],myBuff[BuffNum],c; string strData; - int data_count, data_num; + int dataCount, data_num; double cadence, voltage; - Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx){ - for(int i=0;i<DATAS_NUM;i++) data[i]= '\0'; - for(int i = 0;i<BuffNum;i++) myBuff[i] = '\0'; + Cadence(PinName tx, PinName rx, const char* name = NULL) : RawSerial(tx, rx) { + for(int i=0; i<DATAS_NUM; i++) data[i]= '\0'; + for(int i = 0; i<BuffNum; i++) myBuff[i] = '\0'; data_num=0; - data_count=0; + dataCount=0; baud(115200); cadence=0; voltage=0; -// attach(this, &Cadence::readData); + cadenceT.start(); +// attach(this, &Cadence::readData, RawSerial::RxIrq); } - int checkInt(const char c[]){ - for(int i = 0; i<strlen(c); i++){ + int checkInt(const char c[]) { + for(int i = 0; i<strlen(c); i++) { if( c[0] == '-' ) continue; if( c[i] - '0' > 9 || c[i] - '0' <0 ) return -1; - }return 1; + } + return 1; } - void readData(){ - if(readable()){ - led3 = 1; - do{ - if(!readable()) return; - c = getc(); - if(c != '\n'){ - myBuff[data_count] = c; - data_count++; - } - }while(c == '\n' && myBuff[data_count-1] == '\r'); -// do{ -// if(readable()) { -// char c = getc(); -//// if(c == '\n' && data[data_count-1] == '\r'){ -// if(c == '\n' && myBuff[data_count-1] == '\r'){ -// break; -// }else{ -//// data[data_count] = c; -// myBuff[data_count] = c; -// data_count++; -// } -// } -// }while(data_count<BuffNum); - strData = myBuff; - led3 = 0; - if( int strlength = strData.length() > DATAS_NUM-4 && strlength < DATAS_NUM ){ + void readData() { + if(readable()) { + cadenceT.reset(); + cadenceT.start(); + dataCount = 0; + do { + myBuff[dataCount] = getc(); + dataCount++; + } while(cadenceT.read_us()<1 || myBuff[dataCount-1] != '\n'); + } + if(dataCount != 0) { + dataCount = 0; + led3 = 1; + for(int i = 0; i< strlen(myBuff); i ++) + strData += myBuff[i]; + //strData = string(myBuff,DATAS_NUM); + if( int strlength = strData.length() > DATAS_NUM-4 && strlength < DATAS_NUM ) { // for(int i = 0; i<4; i++){ -// strC += data[data_count-6+i]; -// strV += data[data_count-43+i]; +// strC += data[dataCount-6+i]; +// strV += data[dataCount-43+i]; // } // if( checkInt(strC) ) sscanf(strC,"%lf",&cadence); // if( checkInt(strV) ) sscanf(strV,"%lf",&voltage); - switch (strlength){ - case DATAS_NUM-3 : - strData.erase(0,2); - break; - case DATAS_NUM-2 : - strData.erase(0,3); - break; - case DATAS_NUM-1 : - strData.erase(0,4); - break; - case DATAS_NUM : - strData.erase(0,5); - } - strV = strData.substr(27,4); - strC = strData.substr(64,4); - if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); - if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); - - cadence /= 6.0; - voltage *= 0.001; - } - for (int i = 0; i<data_count; i++) myBuff[i] = '\0'; - data_count = 0; - } - } + switch (strlength) { + case DATAS_NUM-3 : + strData.erase(0,2); + break; + case DATAS_NUM-2 : + strData.erase(0,3); + break; + case DATAS_NUM-1 : + strData.erase(0,4); + break; + case DATAS_NUM : + strData.erase(0,5); + } + strV = strData.substr(27,4); + strC = strData.substr(64,4); + if( checkInt( strV.c_str() ) ) sscanf(strV.c_str(),"%lf",&voltage); + if( checkInt( strC.c_str() ) ) sscanf(strC.c_str(),"%lf",&cadence); + + cadence /= 6.0; + voltage *= 0.001; + }//strlength +// led3 = 0; + for (int i = 0; i < strlen(myBuff); i++) myBuff[i] = '\0'; + dataCount = 0; + }//if(dataCount != 0) + }//readData }; #endif \ No newline at end of file
--- a/SDFileSystem.lib Sun Mar 12 10:56:54 2017 +0000 +++ b/SDFileSystem.lib Sat Mar 18 03:13:36 2017 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/SDFileSystem/#8db0d3b02cec +http://developer.mbed.org/users/mbed_official/code/SDFileSystem/#8a6740f6c555
--- a/main.cpp Sun Mar 12 10:56:54 2017 +0000 +++ b/main.cpp Sat Mar 18 03:13:36 2017 +0000 @@ -1,11 +1,11 @@ //計器プログラム #include "mbed.h" #include "rtos.h" +#include "Cadence.h" #include "Fusokukei.h" #include "MPU6050.h" #include "BufferedSoftSerial.h" -#include "Cadence.h" -#include "SDFileSystem.h" +//#include "SDFileSystem.h" #define SOUDA_DATAS_NUM 24 //(yokutan 7 + input 5)*2 #define WRITE_DATAS_NUM 30 // souda_datas_num + 6( rpy, airspeed, height, cadence) @@ -31,15 +31,15 @@ } //------------------------------------------------------- -SDFileSystem sd(p5, p6, p7, p8, "sd"); -FILE* fp; +//SDFileSystem sd(p5, p6, p7, p8, "sd"); +//FILE* fp; RawSerial pc(USBTX,USBRX); RawSerial android(p9,p10); BufferedSoftSerial soudaSerial(p17,p18); BufferedSoftSerial twe(p11,p12); Cadence cadence_twe(p13,p14); -//Ticker cadenceUpdateTicker; +Ticker cadenceUpdateTicker; //Ticker writeDatasTicker; //Timer writeTimer; @@ -75,14 +75,14 @@ void call_calcAirSpeed(); void sonarInterruptStart(); void sonarInterruptStop(); -void updateCadence(void const *arg); +void updateCadence(/*void const *arg*/); void init(); void FusokukeiInit(); void MpuInit(); void mpuProcessing(void const *arg); void DataReceiveFromSouda(void const *arg); void SdInit(); -void SDprintf(); +//void SDprintf(); void WriteDatas(); float calcAttackAngle(); float calcKXdeg(float x); @@ -130,10 +130,10 @@ twe.baud(19200);//BufferedSoftSerialでは19200が上限。twelite側でもBPS無効化が必要 //writeTimer.start(); FusokukeiInit(); - SdInit(); +// SdInit(); // MpuInit(); //writeDatasTicker.attach(&WriteDatas,1); -// cadenceUpdateTicker.attach(&updateCadence, 1); + cadenceUpdateTicker.attach(&updateCadence, 1); //-----for InterruptMode of sonar---------------------------- // sonarPin.rise(&sonarInterruptStart); @@ -229,30 +229,30 @@ }//if // }//while(1) } - -void SdInit(){ - mkdir("/sd/mydir", 0777); - fp = fopen("/sd/mydir/sdtest2.csv", "w"); - if(fp == NULL) { - error("Could not open file for write\n"); - } - fprintf(fp, "Hello fun SD Card World!\n\r"); - fclose(fp); -} - -void SDprintf(){ - fp = fopen("/sd/mydir/data.csv", "a"); - if(fp == NULL) { - error("Could not open file for write\n"); - } - for(int i = 0; i < SD_WRITE_NUM; i++){ - for(int j = 0; j < WRITE_DATAS_NUM; j++){ - fprintf(fp,"%f,", writeDatas[i][j]); - } - } - fprintf(fp,"\n\r"); - fclose(fp); -} +// +//void SdInit(){ +// mkdir("/sd/mydir", 0777); +// fp = fopen("/sd/mydir/sdtest2.csv", "w"); +// if(fp == NULL) { +// error("Could not open file for write\n"); +// } +// fprintf(fp, "Hello fun SD Card World!\n\r"); +// fclose(fp); +//} +// +//void SDprintf(){ +// fp = fopen("/sd/mydir/data.csv", "a"); +// if(fp == NULL) { +// error("Could not open file for write\n"); +// } +// for(int i = 0; i < SD_WRITE_NUM; i++){ +// for(int j = 0; j < WRITE_DATAS_NUM; j++){ +// fprintf(fp,"%f,", writeDatas[i][j]); +// } +// } +// fprintf(fp,"\n\r"); +// fclose(fp); +//} void WriteDatas(){ int i; @@ -274,7 +274,7 @@ // pc.printf("\n\r"); // twe.printf("\n\r"); if(write_datas_index == SD_WRITE_NUM-1){ - SDprintf(); +// SDprintf(); write_datas_index=0; } else{ @@ -287,12 +287,13 @@ } //pc.printf("\n\r"); twe.printf("%f,%f,%f,",pitch,roll,yaw); - twe.printf("%f,%f,%f\r\n",airSpeed,sonarDist,cadence_twe.cadence); + twe.printf("%f,%f,%f\r\n",airSpeed,sonarDist,cadence_twe.cadence); pc.printf("%f,%f,%f\n\r",pitch,roll,yaw); - //pc.printf("%f,%f,%f\n\r",calcKXdeg(kx_X.read()),calcKXdeg(KX_Y),calcKXdeg(KX_Z)); - pc.printf("%f,%f,%s\n\r",airSpeed,sonarDist,cadence_twe.myBuff); - pc.printf(cadence_twe.strData.c_str()); - pc.putc(cadence_twe.strV[0]); + //pc.printf("%f,%f,%f\n\r",calcKXdeg(kx_X.read()),calcKXdeg(KX_Y),calcKXdeg(KX_Z)); + pc.printf("%f,%f\n\r",airSpeed,sonarDist); + for(int i = 0; i < cadence_twe.strData.length(); i++){ + pc.printf("%c",*(cadence_twe.strData.c_str()+i)); + } if(android.writeable()){ // for(int i = 0; i<SOUDA_DATAS_NUM; i++){ // android.printf("%i,",soudaDatas[i]);
--- a/mbed.bld Sun Mar 12 10:56:54 2017 +0000 +++ b/mbed.bld Sat Mar 18 03:13:36 2017 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/e1686b8d5b90 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/093f2bd7b9eb \ No newline at end of file