diff --git a/daq b/daq
index 39786ef..3db01af 100755
Binary files a/daq and b/daq differ
diff --git a/daq.c b/daq.c
index 8f03b2b..89f06dc 100644
--- a/daq.c
+++ b/daq.c
@@ -12,7 +12,7 @@
 #define data_file_path  "/var/lib/cloud9/daq-serial-bbb/data.dat"
 
 #define GC0017     4    //co2
-#define CM31911    1    //co
+#define CM31911    1    //co, t
 #define OX0052     2    //o2
 
 #define Rep_Dev_ID      "Y\r\n"
@@ -23,6 +23,7 @@
 #define Temperature     "T\r\n"
 #define get_readigns    "Q\r\n"
 #define percent_oxigen  "%\r\n"
+#define ppm_oxigen      "O\r\n"
 
 
 int sensConf(unsigned char uartNumber, int baudRate, unsigned char mode[], unsigned char response[]);
@@ -43,15 +44,15 @@ int main(int argc, char *argv[]){
     }
     
     //configuración de sensores
-    //printf("Configuring CO2 sensor\n");
-    //sensConf(GC0017, B9600, Pulling_Mode, " K 00002\r\n");
-    //printf("Configuring CO sensor\n");
-    //sensConf(CM31911, B9600, Pulling_Mode, "K 00002\r\n");
+    printf("Configuring CO2 sensor\n");
+    sensConf(GC0017, B9600, Pulling_Mode, " K 00002\r\n");
+    printf("Configuring CO sensor\n");
+    sensConf(CM31911, B9600, Pulling_Mode, "K 00002\r\n");
     printf("Configuring O2 sensor\n");
     sensConf(OX0052, B9600, OX_P_Mode, "M 01\r\n");
     
     //adquisición
-    T = atoi(argv[1]);
+    T = atoi(argv[1]);//str to int
     t = atoi(argv[2]);
     printf("Starting data acquisition with duration of %dh and every %ds\n", T, t);
     DAQ(T, t);
@@ -107,6 +108,13 @@ int measure(unsigned char uartNumber, unsigned char command[], int multiplier, i
     return measure;
 }
 
+int read_measure(unsigned char uartNumber, int multiplier, int excess){
+    int measure;
+    uartReceive(uartNumber);
+    measure = (str2int(&receive[uartNumber]) - excess)*multiplier ;
+    return measure;
+}
+
 int str2int(unsigned char *ptr){
 
   int number = 0;
@@ -127,32 +135,45 @@ int DAQ(int t_hrs, int tm_s)
     int co2, co, o2, temp;
     clock_t start_t, end_t;
     time_t new_time, prev_time, t0;
-	double dif;
-
-    
+	double tm_ms = tm_s*1e6 - 0.20e6;
+	double dif = tm_ms;
+	    
     //registro datos de inicio
     dfp = fopen(data_file_path, "w"); // open file for writing
     time_t curtime;
     time(&curtime);
-    fprintf(dfp, "%sStarting DAQ\ntime(s)\t\tCO2(ppm)\t\tCO(ppm)\t\tO2(ppm)\t\tTemperaure(ºC*10)\n", ctime(&curtime)); // send the value to the file
+    fprintf(dfp, "%sStarting DAQ\ntime(s)\tCO2(ppm)\tCO(ppm)\tO2(ppm)\tTemperaure(ºC*10)\n", ctime(&curtime)); // send the value to the file
     fclose(dfp); // close the file using the file pointer
     
     //ciclo
-    t0 = (prev_time=time(NULL));
+    t0 = time(NULL) + tm_s;
+    new_time = t0;
     for(int i = 0; i < (t_hrs*3600); i=i+tm_s){
-        while((prev_time+tm_s) != (new_time = time(NULL)));
+        
+        if (dif <= 0) printf("T=%d Communication time exceded.\n", (int)(new_time-t0));
+        else usleep((int)dif);
+        
+        if (time(NULL) < new_time) while(new_time != time(NULL));
+        else printf("T=%d time error.\n", (int)(new_time-t0));
+        
         start_t = clock();
-            //co2 = measure(GC0017, fil_gas_con, 10, 0); co = measure(CM31911, fil_gas_con, 1, 0);
-            o2 = measure(OX0052, percent_oxigen, 1, 0);///*temp = measure(CM31911, Temperature, 1, 1000);
+            new_time = time(NULL);
+            uartTransmit(CM31911, fil_gas_con);
+            uartTransmit(GC0017, fil_gas_con);
+            co = read_measure(CM31911, 1, 0);
+            uartTransmit(CM31911, Temperature);
+            uartTransmit(OX0052, ppm_oxigen);
+            co2 = read_measure(GC0017, 10, 0); 
+            o2 = read_measure(OX0052, 1, 0);
+            temp = read_measure(CM31911, 1, 1000);
+            
             dfp = fopen(data_file_path, "a"); // open file for writing
-            fprintf(dfp, "%ld \t\t%d\t\t%d\t\t%d\t\t%d\n", new_time-t0, co2, co, o2, temp); // send the value to the file
+            fprintf(dfp, "%d \t%d\t%d\t%d\t%d\n", (int)(new_time-t0), co2, co, o2, temp); // send the value to the file
             fclose(dfp); // close the file using the file pointer
-            prev_time = new_time;
+            new_time += tm_s;
         end_t = clock();
-        dif = (double)(end_t - start_t)*1e6 / CLOCKS_PER_SEC;
-        dif = tm_s*1e6 - dif - .15e6;
-        if (dif < 0) dif = 0;
-        usleep((int)dif);
+        
+        dif =  tm_ms - ((double)(end_t - start_t)*1e6 / CLOCKS_PER_SEC);
     }
     
     return 0;