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:
15:c9205e490740
Parent:
14:e6686a44db84
Child:
16:fc7d8cc6bf4b
--- a/main.cpp	Mon May 08 16:01:53 2017 +0000
+++ b/main.cpp	Tue May 09 10:56:26 2017 +0000
@@ -19,8 +19,24 @@
 #include "ble/services/UARTService.h"
 #include <string>
 
-//Ecrit dans le moniteur série de l'ordi à 9600 bds
+//Ecrit dans le moniteur série de l'ordi à 9600 bds si sur 1
+#define NEED_CONSOLE_OUTPUT 1
+//Pour utiliser le traceur du moniteur Arduino. Mettre NEED_CONSOLE_OUTPUT 0 si utilisé
+#define NEED_GRAPH_OUTPUT 0
+//Datalog carte SD si sur 1
+#define NEED_SD_DATA_LOG 1
+
+#if NEED_CONSOLE_OUTPUT
 #define DEBUG(...) { serialMonit.printf(__VA_ARGS__); }
+#else
+#define DEBUG(...)
+#endif
+
+#if NEED_GRAPH_OUTPUT
+#define TRACE(...) { serialMonit.printf(__VA_ARGS__); }
+#else
+#define TRACE(...)
+#endif
 
 //Init BLE
 BLEDevice  ble;
@@ -43,6 +59,7 @@
 float Temp2 = 0;
 float Humi = 0;
 
+//Pour stocker le format date / heure
 string DateHeure;
 
 //SD card
@@ -51,13 +68,14 @@
 char fileName[32];
 int points = 1;
 
-//Fonction pour créer et envoyer la chaine d'in en BLE
-//On balance tout en float, même pour des int...Qu peut le plus peut le moins...
+
+//Fonction pour créer et envoyer la chaine d'infos en BLE
+//On balance tout en float, même pour des int...Qui peut le plus peut le moins...
 //3 par 3 ça passe juste avec un décimal....Sinon faire deux par deux ???
 void build_send_Message(string com, float A, float B, float C)
 {
     char buf[50];
-    sprintf(buf,"%s %.1f %.1f %.1f\r\n", com, A, B, C);
+    sprintf(buf,"%s%.1f:%.1f:%.1f\r\n", com, A, B, C);
     uartServicePtr->writeString(buf);
 }
 
@@ -74,7 +92,7 @@
         uint16_t bytesRead = params->len;
         /*
         // les chaines de réponse
-        /uint8_t press_mb_ToSend[14];
+        uint8_t press_mb_ToSend[14];
         uint8_t co2_ppm_ToSend[14];
         uint8_t o2_mb_ToSend[14];
 
@@ -95,7 +113,7 @@
             co2_ppm_ToSend[j]=s_co2_ppm[j];
             o2_mb_ToSend[j]=s_o2_mb[j];
         }
-        */
+*/
         // chaine reçue de l'app android (à dimensionner selon besoin)
         char commande [bytesRead] ;
 
@@ -103,7 +121,6 @@
         for (int j=0; j<bytesRead; j++) {
             commande [j] = (*((params->data)+j));
         }
-
 /*
         DEBUG("received %u bytes => ", bytesRead);
         DEBUG("commande recue -%s-\r\n",commande);
@@ -126,7 +143,8 @@
             DEBUG("s_o2_mb %s +++> data to send %s \r\n",s_o2_mb,o2_mb_ToSend);
             ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), o2_mb_ToSend, sizeof(o2_mb_ToSend));
             }
-        else */
+        else
+*/
         if (strcmp(commande, "t") == 0) {
             build_send_Message("t", ppO2, co2, pression);
         }else
@@ -149,12 +167,13 @@
     } while (filePtr != NULL);
     return fopen( fileName,"w");
 }
+
 void SetTime()
 {
     //Reglage date / heure depuis le terminal
     struct tm t;
-    DEBUG("Entrer la date et l'heure :\n");
-    DEBUG("YYYY MM DD HH MM SS [enter]\n");
+    serialMonit.printf("Entrer la date et l'heure :\n");
+    serialMonit.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;
@@ -162,12 +181,14 @@
 
     // set the time
     set_time(mktime(&t));
+    if(NEED_CONSOLE_OUTPUT == 0) serialMonit.printf("OK. Vous pouvez fermer le moniteur serie");
 }
 
 void init_DATALOG()
 {
     //Initialisation DATA LOG
     DEBUG("Initialisation SD card\r\n");
+    DEBUG("\r\n", "");
     fp = nextLogFile();
 
     if (!fp) {
@@ -200,7 +221,8 @@
     //Réglage de l'heure
     SetTime();
 
-    init_DATALOG();
+    //Initialisation du Data log
+    if (NEED_SD_DATA_LOG == 1) init_DATALOG();
 
     //Initialisation capteurs
     arnsrs.Sensors_INIT(false, 5, SPOOLING, DIGI_FILTER32, CALIB_AIR);
@@ -233,12 +255,11 @@
     UARTService uartService(ble);
     uartServicePtr = &uartService;
 
-
     while (1) {
 
         ble.waitForEvent();
 
-        wait_ms(500);
+        //wait_ms(500);
 
         //RTC
         time_t seconds = time(NULL);
@@ -259,17 +280,28 @@
 
         //Affichage sur moniteur série
         DEBUG("  CO2           = %d\r\n"  , co2);
-        DEBUG("  Humidité      = %f\r\n"  , Humi);
-        DEBUG("  Température   = %f\r\n"  ,Temp1);
+        DEBUG("  Humidite      = %f\r\n"  , Humi);
+        DEBUG("  Temperature   = %f\r\n"  ,Temp1);
         //P / T sur MS5803
         DEBUG("  Pression      = %f\r\n", pression);
-        DEBUG("  Température   = %f\r\n", Temp2);
+        DEBUG("  Temperature   = %f\r\n", Temp2);
         //PPO2 sur ADS1015
         DEBUG("  PPO2          = %d\r\n", ppO2);
         DEBUG("\r\n", "");
 
+        //Traceur
+        TRACE("%d\r\n"  , co2);
+        TRACE("%d\r\n"  , ppO2);
+        TRACE("%f\r\n"  , Humi);
+        TRACE("%f\r\n"  , Temp1);
+        TRACE("%f\r\n"  , Temp2);
+        TRACE("%f\r\n"  , pression);
+        
         //Data LOG
-        DATA_LOG();
-
+        if (NEED_SD_DATA_LOG == 1) DATA_LOG();
+        
+        build_send_Message("t", ppO2, co2, pression);
+        build_send_Message("u", Temp1, Temp2, Humi);
+        
     }
 }