une 30aine passés sans pb entre les trames

Dependencies:   ADS1015 ARNSRS_SENSORS DmTftLibrary MS5803_14BA SDFileSystem mbed

Fork of ARNSRS_SERVOS_USB_TFT by POTLESS

Revision:
7:c5a5d8f678ff
Parent:
6:1c2212891714
Child:
8:e864edfe656e
--- a/main.cpp	Wed May 03 15:03:20 2017 +0000
+++ b/main.cpp	Wed May 03 16:32:37 2017 +0000
@@ -22,9 +22,6 @@
 DigitalIn mybutton(USER_BUTTON);
 DigitalOut myled(LED1);
 
-//RTC
-time_t seconds;
-
 //Quelque FLAG...
 bool FLAG_SIMPLE_TIME = false;
 
@@ -39,18 +36,59 @@
 //SD card
 SDFileSystem sd(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS
 FILE *fp;
+char fileName[32];
+int points = 1;
 
+//Fonction qui change le nom du fichier ouvert pour le LOG
+FILE *nextLogFile(void)
+{
+    static unsigned int fileNumber = 0;
+    FILE *filePtr = NULL;
+    do {
+        if (filePtr != NULL)
+            fclose(filePtr);
+        sprintf(fileName,"/sd/LOG_Capteurs_%04u.txt",fileNumber++);
+        filePtr = fopen(fileName,"r");
+    } while (filePtr != NULL);
+    return fopen( fileName,"w");
+}
+void SetTime() {
+  //Reglage date / heure depuis le terminal
+    struct tm t;
+    printf("Entrer la date et l'heure :\n");
+    printf("YYYY MM DD HH MM SS [enter]\n");    
+    scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday
+                             , &t.tm_hour, &t.tm_min, &t.tm_sec);
+    t.tm_year = t.tm_year - 1900;
+    t.tm_mon = t.tm_mon - 1;
+    
+    // set the time
+    set_time(mktime(&t));   
+}    
 ///////////////////////////////////
 // fonction initialisation    /////
 ///////////////////////////////////
 void setup()
 {
-    //RTC
-    seconds = time(NULL);
-    DateHeure = ctime(&seconds);
-
+    //Réglage de l'heure
+    SetTime();
+    
+    wait(2);
+    
+    //Initialisation DATA LOG
+    serialMonit.printf("Initialisation SD card\r\n");
+    fp = nextLogFile();
+    
+    if (!fp) {       
+    serialMonit.printf("Probleme SD card...Fin du programme...\r\n");
+    exit(0); 
+    }else{
+    serialMonit.printf("Nouveau fichier LOG cree  =  %s\r\n", fileName);
+    serialMonit.printf("\r\n", "");    
+    }
+    
+    //Initialisation capteurs
     arnsrs.Sensors_INIT(5, SPOOLING, DIGI_FILTER32, CALIB_AIR);
-
 }
 
 /////////////////////////////////////
@@ -59,37 +97,17 @@
 
 int main()
 {
-    wait(2);
-
-    serialMonit.printf("Initialisation SD card\r\n");
-    fp = fopen("/sd/Capteurs.txt", "r");
-    if (fp != NULL) {
-        fclose(fp);
-        remove("/sd/Capteurs.txt");
-        serialMonit.printf("Suppression d'un fichier du meme nom\r\n");
-    }
-
-    fp = fopen("/sd/Capteurs.txt", "w");
-    if (fp == NULL) {
-        serialMonit.printf("Impossible d'ouvrir le fichier LOG\r\n");
-    } else {
-        fprintf(fp, "LOG Capteurs ARNSRS");
-        fclose(fp);
-        serialMonit.printf("Header du fichier cree\r\n");
-    }
-
-    setup(); //initialisation
+    setup();
 
     while (1) {
 
         wait(2);
         
         //RTC
-        seconds = time(NULL);
+        time_t seconds = time(NULL);
         
         if (!FLAG_SIMPLE_TIME){
-        DateHeure = ctime(&seconds);
-        printf("  Date / Heure = %s\r\n", DateHeure);
+        printf("  Date / Heure = %s\r\n", ctime(&seconds));
         }else{
         char buffer[32];
         strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
@@ -109,18 +127,29 @@
         ppO2 = arnsrs.requestPpO2();
 
         //Affichage sur moniteur série
-        serialMonit.printf("  Co2           = %d\r\n"  , co2);   
+        serialMonit.printf("  CO2           = %d\r\n"  , co2);   
         serialMonit.printf("  Humidité      = %f\r\n"  , Humi); 
-        serialMonit.printf("  Temperature   = %f\r\n"  ,Temp1);
+        serialMonit.printf("  Température   = %f\r\n"  ,Temp1);
         //P / T sur MS5803
         serialMonit.printf("  Pression      = %f\r\n", pression);
-        serialMonit.printf("  Temperature   = %f\r\n", Temp2);
+        serialMonit.printf("  Température   = %f\r\n", Temp2);
         //PPO2 sur ADS1015
         serialMonit.printf("  PPO2          = %d\r\n", ppO2);
         serialMonit.printf("\r\n", "");
 
+        //Data LOG
+        if (fp) {
+        fprintf(fp, "%s,%d,%d,%f,%f,%f,%f\r\n", ctime(&seconds), co2 , ppO2, pression, Temp1, Temp2, Humi);       
+        serialMonit.printf("  Enregistrement d'un point sur la carte SD\r\n");
+        serialMonit.printf("  Nombre de points                      = %d\r\n", points);
+        serialMonit.printf("\r\n", "");
+        myled = !myled;
+        points++; 
+        }else{
+        serialMonit.printf("  Probleme carte SD\r\n");    
+        }
+               
         if (mybutton == 0) { // Button is pressed
-            myled = !myled; // Toggle the LED state
             FLAG_SIMPLE_TIME = !FLAG_SIMPLE_TIME;
             wait(0.2); // 200 ms
         }