Acercamiento a lo que pide el profe
Fork of 01-01EjercicioFuncionXY by
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!
01_main.cpp@3:3665eb7346e2, 2018-03-12 (annotated)
- Committer:
- Bethory
- Date:
- Mon Mar 12 04:21:09 2018 +0000
- Revision:
- 3:3665eb7346e2
- Child:
- 4:8a884a5dd8c8
Ah? vamos
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Bethory | 3:3665eb7346e2 | 1 | #include "mbed.h" |
Bethory | 3:3665eb7346e2 | 2 | #include "draw.h" |
Bethory | 3:3665eb7346e2 | 3 | #define CM_EJECUTAR 0xFF |
Bethory | 3:3665eb7346e2 | 4 | #define CM_GUARDAR 0xFE |
Bethory | 3:3665eb7346e2 | 5 | #define CM_VERTEX2D 0xFD |
Bethory | 3:3665eb7346e2 | 6 | #define CM_DRAW 0XFC |
Bethory | 3:3665eb7346e2 | 7 | #define CM_NODRAW 0xFB |
Bethory | 3:3665eb7346e2 | 8 | #define CM_STOP 0xFA |
Bethory | 3:3665eb7346e2 | 9 | #define CM_END 0xF0 |
Bethory | 3:3665eb7346e2 | 10 | |
Bethory | 3:3665eb7346e2 | 11 | #define MEM_SIZE 10 |
Bethory | 3:3665eb7346e2 | 12 | #define MEM_TYPE uint32_t //significa que de ahora en más donde diga MEM_TYPE será tipo uint32_t |
Bethory | 3:3665eb7346e2 | 13 | |
Bethory | 3:3665eb7346e2 | 14 | uint8_t mem_head = 0; |
Bethory | 3:3665eb7346e2 | 15 | uint8_t mem_tail = 0; |
Bethory | 3:3665eb7346e2 | 16 | bool full = 0; |
Bethory | 3:3665eb7346e2 | 17 | |
Bethory | 3:3665eb7346e2 | 18 | MEM_TYPE buffer[MEM_SIZE]; |
Bethory | 3:3665eb7346e2 | 19 | Serial command(USBTX, USBRX); |
Bethory | 3:3665eb7346e2 | 20 | |
Bethory | 3:3665eb7346e2 | 21 | void mem_free(){ //Estaba como uint32_t no como void |
Bethory | 3:3665eb7346e2 | 22 | mem_head=0; |
Bethory | 3:3665eb7346e2 | 23 | full=0; |
Bethory | 3:3665eb7346e2 | 24 | } |
Bethory | 3:3665eb7346e2 | 25 | |
Bethory | 3:3665eb7346e2 | 26 | bool mem_put(MEM_TYPE data){ //Escribir |
Bethory | 3:3665eb7346e2 | 27 | if (full) |
Bethory | 3:3665eb7346e2 | 28 | return 1; |
Bethory | 3:3665eb7346e2 | 29 | buffer[mem_head] = data; //carga en dato en el buffer |
Bethory | 3:3665eb7346e2 | 30 | mem_head += 1; |
Bethory | 3:3665eb7346e2 | 31 | if (mem_head == MEM_SIZE) |
Bethory | 3:3665eb7346e2 | 32 | full =1; |
Bethory | 3:3665eb7346e2 | 33 | return 0; |
Bethory | 3:3665eb7346e2 | 34 | } |
Bethory | 3:3665eb7346e2 | 35 | |
Bethory | 3:3665eb7346e2 | 36 | bool mem_get(MEM_TYPE* data){ //Leer |
Bethory | 3:3665eb7346e2 | 37 | if (mem_head == 0) |
Bethory | 3:3665eb7346e2 | 38 | return 1; |
Bethory | 3:3665eb7346e2 | 39 | if (mem_head == mem_tail) |
Bethory | 3:3665eb7346e2 | 40 | return 1; |
Bethory | 3:3665eb7346e2 | 41 | *data = buffer[mem_tail]; |
Bethory | 3:3665eb7346e2 | 42 | mem_tail += 1; |
Bethory | 3:3665eb7346e2 | 43 | return 0; |
Bethory | 3:3665eb7346e2 | 44 | } |
Bethory | 3:3665eb7346e2 | 45 | |
Bethory | 3:3665eb7346e2 | 46 | void ejecutar(){ |
Bethory | 3:3665eb7346e2 | 47 | command.printf("se inicia el comando de ejecutar...\n"); |
Bethory | 3:3665eb7346e2 | 48 | /*for(int i=1;i<=MEM_SIZE;i++){ |
Bethory | 3:3665eb7346e2 | 49 | command.printf("%x\n",buffer[i]); |
Bethory | 3:3665eb7346e2 | 50 | }*/ |
Bethory | 3:3665eb7346e2 | 51 | } |
Bethory | 3:3665eb7346e2 | 52 | |
Bethory | 3:3665eb7346e2 | 53 | void guardar(){ |
Bethory | 3:3665eb7346e2 | 54 | command.printf("se inicia el comando de guardar...\n"); |
Bethory | 3:3665eb7346e2 | 55 | MEM_TYPE val; //significa que la variable "val" es del tipo uint32_t |
Bethory | 3:3665eb7346e2 | 56 | char raw_data; |
Bethory | 3:3665eb7346e2 | 57 | |
Bethory | 3:3665eb7346e2 | 58 | while(1 && !full){ |
Bethory | 3:3665eb7346e2 | 59 | for(int i=1;i<=4;i++){ |
Bethory | 3:3665eb7346e2 | 60 | raw_data=command.getc(); |
Bethory | 3:3665eb7346e2 | 61 | command.printf("%x",raw_data); |
Bethory | 3:3665eb7346e2 | 62 | if(raw_data==CM_STOP) |
Bethory | 3:3665eb7346e2 | 63 | return; |
Bethory | 3:3665eb7346e2 | 64 | if(i==1){ |
Bethory | 3:3665eb7346e2 | 65 | val=raw_data; |
Bethory | 3:3665eb7346e2 | 66 | }else{ |
Bethory | 3:3665eb7346e2 | 67 | |
Bethory | 3:3665eb7346e2 | 68 | val=val << 8; |
Bethory | 3:3665eb7346e2 | 69 | val=val|raw_data; |
Bethory | 3:3665eb7346e2 | 70 | } |
Bethory | 3:3665eb7346e2 | 71 | command.printf(" %d",i); |
Bethory | 3:3665eb7346e2 | 72 | command.printf(" %x\n",val); |
Bethory | 3:3665eb7346e2 | 73 | } |
Bethory | 3:3665eb7346e2 | 74 | mem_put(val); |
Bethory | 3:3665eb7346e2 | 75 | } |
Bethory | 3:3665eb7346e2 | 76 | //mem_get(&val); //&val es la dirección de la variable, no su contenido |
Bethory | 3:3665eb7346e2 | 77 | //command.putc(val); //manda por puerto serial el contenido de "val" npi para qué |
Bethory | 3:3665eb7346e2 | 78 | } |
Bethory | 3:3665eb7346e2 | 79 | |
Bethory | 3:3665eb7346e2 | 80 | int main(){ |
Bethory | 3:3665eb7346e2 | 81 | init_servo(); |
Bethory | 3:3665eb7346e2 | 82 | command.baud(9600); |
Bethory | 3:3665eb7346e2 | 83 | home(); //llama a no_draw y va a 0,0 |
Bethory | 3:3665eb7346e2 | 84 | |
Bethory | 3:3665eb7346e2 | 85 | char read_cc; |
Bethory | 3:3665eb7346e2 | 86 | while(1){ |
Bethory | 3:3665eb7346e2 | 87 | read_cc=command.getc(); |
Bethory | 3:3665eb7346e2 | 88 | switch (read_cc){ |
Bethory | 3:3665eb7346e2 | 89 | case CM_EJECUTAR: ejecutar(); break; |
Bethory | 3:3665eb7346e2 | 90 | case CM_GUARDAR: guardar(); break; |
Bethory | 3:3665eb7346e2 | 91 | default: command.printf("error de comando \n");break ; |
Bethory | 3:3665eb7346e2 | 92 | } |
Bethory | 3:3665eb7346e2 | 93 | } |
Bethory | 3:3665eb7346e2 | 94 | } |
Bethory | 3:3665eb7346e2 | 95 | /* |
Bethory | 3:3665eb7346e2 | 96 | FE FB FD 00 00 F0 |
Bethory | 3:3665eb7346e2 | 97 | FC F0 FD 32 00 F0 |
Bethory | 3:3665eb7346e2 | 98 | FD 32 32 F0 FD 00 |
Bethory | 3:3665eb7346e2 | 99 | 32 F0 FD 00 00 F0 |
Bethory | 3:3665eb7346e2 | 100 | FB F0 FA F0 FF |
Bethory | 3:3665eb7346e2 | 101 | |
Bethory | 3:3665eb7346e2 | 102 | 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 |
Bethory | 3:3665eb7346e2 | 103 | 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 |
Bethory | 3:3665eb7346e2 | 104 | |
Bethory | 3:3665eb7346e2 | 105 | #define CM_EJECUTAR 0xFF |
Bethory | 3:3665eb7346e2 | 106 | #define CM_GUARDAR 0xFE |
Bethory | 3:3665eb7346e2 | 107 | #define CM_VERTEX2D 0xFD |
Bethory | 3:3665eb7346e2 | 108 | #define CM_DRAW 0XFC |
Bethory | 3:3665eb7346e2 | 109 | #define CM_NODRAW 0xFB |
Bethory | 3:3665eb7346e2 | 110 | #define CM_STOP 0xFA |
Bethory | 3:3665eb7346e2 | 111 | #define CM_END 0xF0 |
Bethory | 3:3665eb7346e2 | 112 | */ |