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
Diff: main.cpp
- 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); + } }