2018年度計器mbed用プログラム

Dependencies:   BufferedSoftSerial2 INA226_ver1 mbed-rtos mbed SDFileSystem-RTOS

Fork of keiki2017 by albatross

Branch:
Thread????
Revision:
23:e59afb2044df
Parent:
22:5cbebf097600
Child:
26:50272431cd1e
--- a/main.cpp	Sat Jan 07 00:00:11 2017 +0000
+++ b/main.cpp	Sat Jan 07 02:03:08 2017 +0000
@@ -48,6 +48,7 @@
 DigitalOut RollAlarmL(p19);
 DigitalOut led(LED1);
 DigitalOut led2(LED2);
+DigitalOut led4(LED4);
 
 SDFileSystem sd(p5, p6, p7, p8, "sd");
 FILE* fp;
@@ -92,7 +93,7 @@
     geikakuServo.period_ms(INIT_SERVO_PERIOD_MS);
     FusokukeiInit();
     mpu6050.MPUInit(t); 
-    SdInit();
+//    SdInit();//thread 内で
 }
 
 void FusokukeiInit(){
@@ -112,7 +113,7 @@
     }
     fprintf(fp, "Hello fun SD Card World!\n\r");
     fclose(fp);
-    Thread sd_thread(&SDprintf);
+//    Thread sd_thread(&SDprintf);
 }
 
 void DataReceiveFromSouda(){
@@ -126,22 +127,24 @@
 }
 
 void SDprintf(void const *argument){
+    SdInit();
     while(1){
-    if(write_datas_index == SD_WRITE_NUM-1){
-        fp = fopen("/sd/mydir/sdtest.csv", "a");
-        if(fp == NULL) {
-            error("Could not open file for write\n");
+        if(write_datas_index == SD_WRITE_NUM-1){
+            led4 = !led4;
+            fp = fopen("/sd/mydir/sdtest.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);
+            write_datas_index=0;
         }
-        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);
-        write_datas_index=0;
-    }
-    Thread::wait(1);
+        Thread::wait(10);
     }
 }
 
@@ -166,11 +169,7 @@
 //    }
 //    pc.printf("\n\r");
 //    twe.printf("\n\r");
-    if(write_datas_index == SD_WRITE_NUM-1){
-//        SDprintf();
-        write_datas_index=0;
-    }
-    else{
+    if(write_datas_index < SD_WRITE_NUM-1){
         write_datas_index++;
     } 
     for(int i = 0; i < SOUDA_DATAS_NUM; i++){
@@ -191,6 +190,7 @@
     //pc.printf("%f,%f,%f\n\r",calcKXdeg(kx_X.read()),calcKXdeg(KX_Y),calcKXdeg(KX_Z));   
     pc.printf("%f\n\r",airSpeed);
     //SDprintf();
+    pc.printf("%d\n\r",write_datas_index);
 }
 
 void WriteDatasF(){
@@ -231,6 +231,7 @@
 }
 
 int main(){
+    Thread sd_thread(&SDprintf);//必ずmain内で
     init();
     while(1){
         pc.printf("test\n\r");