Giro en su propio eje Presentado por: Julio Fajardo, Cesar Pacheco, Angel Trujillo, Daniel Vizcaya

Dependencies:   mbed

Fork of 01_Embebidos by Daniel Vizcaya

Revision:
4:8a884a5dd8c8
Parent:
3:3665eb7346e2
Child:
5:8e100835b017
--- a/01_main.cpp	Mon Mar 12 04:21:09 2018 +0000
+++ b/01_main.cpp	Wed Mar 14 04:57:30 2018 +0000
@@ -6,7 +6,7 @@
 #define CM_DRAW 0XFC
 #define CM_NODRAW 0xFB
 #define CM_STOP 0xFA
-#define CM_END 0xF0
+#define CM_ENTER 0xF0
 
 #define MEM_SIZE 10
 #define MEM_TYPE uint32_t //significa que de ahora en más donde diga MEM_TYPE será tipo uint32_t
@@ -52,10 +52,81 @@
 
 void guardar(){
     command.printf("se inicia el comando de guardar...\n");
-    MEM_TYPE val; //significa que la variable "val" es del tipo uint32_t
-    char raw_data;
+    uint32_t val; //significa que la variable "val" es del tipo uint32_t
+    char dato1,dato2;
     
-    while(1 && !full){
+    dato1=command.getc();
+    if(dato1==CM_STOP){
+        dato2=command.getc();
+        if(dato2==CM_ENTER){
+            val=dato1;
+            return;
+        }
+    }
+    if(dato1==CM_NODRAW|dato1==CM_DRAW){
+        dato2=command.getc();
+        if(dato2==CM_ENTER){
+            val=dato1;
+        }
+    }
+    if(dato1==CM_VERTEX2D){
+        dato2=command.getc();
+        if(dato2<=0x32){
+            val=CM_VERTEX2D;
+            val=val<<8;
+            val=val|dato2;
+            dato2=command.getc();
+            if(dato2<=0x32){
+                val=val<<8;
+                val=val|dato2;
+                dato2=command.getc();
+                if(dato2==CM_ENTER){
+                    val=val<<8;
+                    val=val|CM_ENTER;
+                }
+            }  
+        }     
+    }
+}
+
+int main(){
+    init_servo();
+    command.baud(9600);
+    home(); //llama a no_draw y va a 0,0
+   
+    char read_cc;
+    while(1){
+        read_cc=command.getc();
+        switch (read_cc){
+            //case CM_STOP: command.printf("comando no válido en este momento");break; //FA
+            //case CM_NODRAW: guardar(read_cc);break; //FB
+            //case CM_DRAW: guardar(read_cc);break; //FC
+            //case CM_VERTEX2D: command.printf("comando no válido en este momento");break; //FD
+            case CM_GUARDAR: guardar(); break; //FE
+            case CM_EJECUTAR: ejecutar(); break;  //FF
+            default: command.printf("Error de comando \n");break;      
+        }
+    }  
+}
+/*
+FE FB FD 00 00 F0
+FC F0 FD 32 00 F0
+FD 32 32 F0 FD 00
+32 F0 FD 00 00 F0
+FB F0 FA F0 FF
+
+FE F0 FD 54 32 F0 FC F0 FD 32 00 F0 FD 32 32 F0 FD 00 32 F0 FD 00 00 F0 FB F0 FA F0 FF
+FE 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 FA FF
+
+#define CM_EJECUTAR 0xFF
+#define CM_GUARDAR 0xFE
+#define CM_VERTEX2D 0xFD
+#define CM_DRAW 0XFC
+#define CM_NODRAW 0xFB
+#define CM_STOP 0xFA
+#define CM_END 0xF0
+
+    while(!full){
         for(int i=1;i<=4;i++){
             raw_data=command.getc();
             command.printf("%x",raw_data);
@@ -75,38 +146,5 @@
     }
     //mem_get(&val); //&val es la dirección de la variable, no su contenido
     //command.putc(val); //manda por puerto serial el contenido de "val" npi para qué
-}
 
-int main(){
-    init_servo();
-    command.baud(9600);
-    home(); //llama a no_draw y va a 0,0
-   
-    char read_cc;
-    while(1){
-        read_cc=command.getc();
-        switch (read_cc){
-            case  CM_EJECUTAR: ejecutar(); break;
-            case  CM_GUARDAR: guardar(); break;
-            default: command.printf("error de comando \n");break ;      
-        }
-    }  
-}
-/*
-FE FB FD 00 00 F0
-FC F0 FD 32 00 F0
-FD 32 32 F0 FD 00
-32 F0 FD 00 00 F0
-FB F0 FA F0 FF
-
-FE FB FD 54 32 F0 FC F0 FD 32 00 F0 FD 32 32 F0 FD 00 32 F0 FD 00 00 F0 FB F0 FA F0 FF
-FE 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 34 12 FA FF
-
-#define CM_EJECUTAR 0xFF
-#define CM_GUARDAR 0xFE
-#define CM_VERTEX2D 0xFD
-#define CM_DRAW 0XFC
-#define CM_NODRAW 0xFB
-#define CM_STOP 0xFA
-#define CM_END 0xF0
 */
\ No newline at end of file