201708能代のメインマイコンの保存データ送信用プログラム

Dependencies:   MPU6050 mbed MS5607

Revision:
2:1dbaef45ae46
Parent:
0:bdbd3d6fc5d5
Child:
3:660279be8484
--- a/main.cpp	Tue May 16 05:18:55 2017 +0000
+++ b/main.cpp	Tue Jul 18 14:22:08 2017 +0000
@@ -1,19 +1,50 @@
 #include "mbed.h"
+#include "string.h"
 #include "SDFileSystem.h"
- 
-SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
- 
+
+#define BUFFNUM 50
+#define CHARNUM 16
+
+SDFileSystem sd(dp2, dp1, dp6, dp14, "sd");
+Serial mainCP(dp16, dp15);
+
+bool row = false;
+int8_t col=0, cnt=0;
+char data[2][BUFFNUM][CHARNUM] = {};
+FILE *fp;
+
+void _log();
+
 int main() {
-    printf("Hello World!\n");   
- 
-    mkdir("/sd/mydir", 0777);
-    
-    FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
-    if(fp == NULL) {
-        error("Could not open file for write\n");
+  printf("Hello World!\r\n");
+  mkdir("/sd/mydir", 0777);
+  fp = fopen("/sd/mydir/log.txt", "w");
+  if(fp == NULL) error("Could not open file for write\r\n");
+  fprintf(fp, "Hello fun SD Card World!\n");
+  fclose(fp);
+  mainCP.attach(&_log, Serial::RxIrq);
+  while(1);
+}
+
+void _log(){//受信割り込み用.\n区切りで保存する.
+  data[row][col][cnt] = mainCP.getc();
+  cnt++;
+  if(data[row][col][cnt]=='\n'){
+    col++;
+    cnt = 0;
+  }else if(cnt==CHARNUM){
+    memset(&data[row][col][0],'\0',CHARNUM);
+    cnt = 0;
+  }
+
+  if(col==BUFFNUM){
+    col = 0;
+    row = !row;
+    fp = fopen("/sd/mydir/log.txt", "a");
+    for (int i = 0; i < BUFFNUM; i++){
+      fprintf(fp,&data[!row][i][0]);
     }
-    fprintf(fp, "Hello fun SD Card World!");
-    fclose(fp); 
- 
-    printf("Goodbye World!\n");
-}
+    fclose(fp);
+    memset(&data[row][0][0],'\0',BUFFNUM*CHARNUM);
+  }
+}
\ No newline at end of file