Acercamiento a lo que pide el profe

Dependencies:   mbed

Fork of 01-01EjercicioFuncionXY by ferney alberto beltran molina

Tomando como base los ejemplos que el Ing. Ferney subió, realizamos este primer acercamiento al objetivo del primer corte.

en síntesis se generó el código de guardar y ejecutar.

Slds!

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