Marlon Fulla / Mbed 2 deprecated 2014FEB04_Vibrometro_Xbee

Dependencies:   mbed

Fork of 2014FEB4_Vibrometro_Xbee by Marlon Fulla

Files at this revision

API Documentation at this revision

Comitter:
jlpalaci
Date:
Tue Jan 28 00:10:05 2014 +0000
Parent:
7:d1eba8f22f3e
Commit message:
Version final en base de funcines de C para la lectura/escritura de meorias SD.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Jan 08 05:13:45 2014 +0000
+++ b/main.cpp	Tue Jan 28 00:10:05 2014 +0000
@@ -14,8 +14,9 @@
 //SD FAT system
 SDFileSystem sd(PTD2, PTD3, PTD1, PTD0,"sd");
 //Comunicación Xbee
-Serial xbee(PTA2,PTA1);
-//Serial xbee(USBTX,USBRX);
+Serial xbee(PTA2,PTA1); //Serial xbee(USBTX,USBRX);
+//Pin de control de flujo RTS (usado en la función Serial_RTS)
+DigitalIn rts(PTD4);
 
 
 //Definición de variables globales
@@ -24,9 +25,16 @@
 int inicio = 0;
 int fin = 0;
 int samples = 1;
+int imax = 0;
 char read [64] = {0};
 char readvar [512] = {0};
 
+
+//Declaración de la función UART con control de flujo
+//Sólo RTS
+int Serial_RTS(const char *str);
+
+
 int main()
 {
     //xbee.baud(9600);
@@ -36,17 +44,20 @@
     g_sel = 0;  //Ajusta la sensibilidad a 1.5g (cambiar a 1 para ajustar sensibilidad a 6g)
 
     while(1) {
-        //char read [64] = {0};
-        //char readvar [512] = {0};
-
         xbee.scanf("%s",read); //Espera la recepción de caracteres
         switch(read[0]) {
             case 'r':   //Lee la información de la memoria SD y la envía mediante Xbee
                 //if(read[1]=='1') { //Nombre para modulo 1...
                     fp2 = fopen ("/sd/test.txt","r");
-                    for (int i=0; i<samples/3; i++) {
+                    
+                    if(samples%42==0 && samples>42) imax=samples/42;
+                    else imax=samples/42;
+                    //imax=samples/42;
+                    
+                    for (int i=0; i<imax; i++) {
                         fscanf (fp2,"%s",readvar);
-                        xbee.printf("%s",readvar);
+                        //xbee.printf("%s",readvar);
+                        Serial_RTS(readvar);
                         xbee.putc('\n');
                     }
                     fclose (fp2);
@@ -65,7 +76,7 @@
                 //Ciclo de lectura de los ejes x, y, z del acelerómetro triaxial MMA7361L
                 for(int i=1; i<=samples; i++) {
                     fprintf (fp1,"%04X%04X%04X",ain_x.read_u16(),ain_y.read_u16(),ain_z.read_u16());
-                    if((i>=42) && (i%3==42)) fprintf (fp1,"\n"); //cambiar a 3 para longitud de 12 caracteres
+                    if((i>=42) && (i%42==0)) fprintf (fp1,"\n");
                 }
                 //Tiempo transcurrido desde la ejecución del reloj
                 fin = reloj.read_us();
@@ -73,4 +84,15 @@
                 break;
         }
     }
+}
+
+
+//Definición de la función UART RTS
+int Serial_RTS(const char *str)
+{
+    while (*str) {
+        while(rts);
+        xbee.putc(*str ++);
+    }
+    return 0;
 }
\ No newline at end of file