Luis Miguel Castro Tenjica / Mbed 2 deprecated 02_LAB_serial_protocol

Dependencies:   mbed

Fork of 02_LAB_serial_protocol by ferney alberto beltran molina

Committer:
LuisMiguelCastro
Date:
Sat Oct 07 01:24:47 2017 +0000
Revision:
10:846a16647b9a
Parent:
9:3a8624147a4c
ultimo envio

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabeltranm 0:55d11eeb0faf 1 #include "mbed.h"
fabeltranm 0:55d11eeb0faf 2 #include "mbed.h"
fabeltranm 0:55d11eeb0faf 3
fabeltranm 0:55d11eeb0faf 4 Serial command(USBTX, USBRX);
fabeltranm 2:200a9507b696 5 DigitalOut led(LED1);
fabeltranm 0:55d11eeb0faf 6 #define DEBUG 1
fabeltranm 0:55d11eeb0faf 7
fabeltranm 0:55d11eeb0faf 8 //*****************************************************************************
fabeltranm 0:55d11eeb0faf 9 // COMANDO MOVER MOTOR
fabeltranm 0:55d11eeb0faf 10 // |POS 1|POS 2|POS 3|POS 4| POS 5|
fabeltranm 7:fab201aa45b7 11 // | < | #C | a | b | > |
fabeltranm 0:55d11eeb0faf 12 //
fabeltranm 6:cb6b868465c3 13 // #C -> indica el comando
fabeltranm 6:cb6b868465c3 14 // a,b,c,d parametros del comando
fabeltranm 6:cb6b868465c3 15 // <,> -> inicio, y fin de comando
fabeltranm 0:55d11eeb0faf 16 // el inicio de comando no se almacena en el buffer
fabeltranm 0:55d11eeb0faf 17 //*****************************************************************************
fabeltranm 0:55d11eeb0faf 18
fabeltranm 0:55d11eeb0faf 19 // VARIABLES PARA DEFINIR EL COMMANDO
fabeltranm 0:55d11eeb0faf 20 #define BUFF_SIZE 4
fabeltranm 6:cb6b868465c3 21 #define COMM_N 0
fabeltranm 6:cb6b868465c3 22 #define INITPARAMETER 1
fabeltranm 0:55d11eeb0faf 23
fabeltranm 0:55d11eeb0faf 24
fabeltranm 7:fab201aa45b7 25 // COMANDOS
fabeltranm 7:fab201aa45b7 26 #define LED_NC 0
LuisMiguelCastro 10:846a16647b9a 27 #define DOT_NC 1
fabeltranm 7:fab201aa45b7 28 #define LINE_NC 2
fabeltranm 7:fab201aa45b7 29 #define RECTANGLE_NC 3
fabeltranm 7:fab201aa45b7 30 #define CICLE_NC 4
fabeltranm 7:fab201aa45b7 31 #define HOME_NC 5
fabeltranm 7:fab201aa45b7 32
fabeltranm 7:fab201aa45b7 33
fabeltranm 7:fab201aa45b7 34
fabeltranm 0:55d11eeb0faf 35 uint8_t buffer_command[BUFF_SIZE]={0,0,0,0};
fabeltranm 0:55d11eeb0faf 36
fabeltranm 1:0bcd96e56022 37
fabeltranm 1:0bcd96e56022 38 void print_num(uint8_t val)
fabeltranm 1:0bcd96e56022 39
fabeltranm 1:0bcd96e56022 40 {
fabeltranm 1:0bcd96e56022 41 if (val <10)
fabeltranm 1:0bcd96e56022 42 command.putc(val+0x30);
fabeltranm 1:0bcd96e56022 43 else
fabeltranm 2:200a9507b696 44 command.putc(val-9+0x40);
fabeltranm 1:0bcd96e56022 45
fabeltranm 1:0bcd96e56022 46 }
fabeltranm 1:0bcd96e56022 47 void print_bin2hex (uint8_t val)
fabeltranm 1:0bcd96e56022 48 {
fabeltranm 1:0bcd96e56022 49 command.printf(" 0x");
fabeltranm 1:0bcd96e56022 50 print_num(val>>4);
fabeltranm 1:0bcd96e56022 51 print_num(val&0x0f);
fabeltranm 1:0bcd96e56022 52
fabeltranm 1:0bcd96e56022 53
fabeltranm 1:0bcd96e56022 54 }
fabeltranm 1:0bcd96e56022 55
fabeltranm 0:55d11eeb0faf 56 // TODO : TIMEOUT UART SERIAL
fabeltranm 0:55d11eeb0faf 57 void Read_command()
fabeltranm 0:55d11eeb0faf 58 {
fabeltranm 0:55d11eeb0faf 59 for (uint8_t i=0; i<BUFF_SIZE;i++)
fabeltranm 0:55d11eeb0faf 60 buffer_command[i]=command.getc();
fabeltranm 0:55d11eeb0faf 61
fabeltranm 0:55d11eeb0faf 62 }
fabeltranm 0:55d11eeb0faf 63
fabeltranm 0:55d11eeb0faf 64 void echo_command()
fabeltranm 0:55d11eeb0faf 65 {
fabeltranm 0:55d11eeb0faf 66 for (uint8_t i=0; i<BUFF_SIZE;i++)
fabeltranm 1:0bcd96e56022 67 print_bin2hex(buffer_command[i]);
fabeltranm 0:55d11eeb0faf 68
fabeltranm 0:55d11eeb0faf 69 }
fabeltranm 0:55d11eeb0faf 70
fabeltranm 0:55d11eeb0faf 71
fabeltranm 2:200a9507b696 72 uint8_t check_command()
fabeltranm 0:55d11eeb0faf 73 {
fabeltranm 8:cd9b52716920 74 if (buffer_command[BUFF_SIZE-1]== '>')
fabeltranm 8:cd9b52716920 75 return 1;
fabeltranm 2:200a9507b696 76 return 0;
fabeltranm 0:55d11eeb0faf 77
fabeltranm 0:55d11eeb0faf 78
fabeltranm 0:55d11eeb0faf 79 }
fabeltranm 9:3a8624147a4c 80 void command_led(uint8_t tm)
fabeltranm 5:bf9591a365a4 81 {
fabeltranm 9:3a8624147a4c 82
fabeltranm 5:bf9591a365a4 83 //EJEMPLO DE COMANDO
fabeltranm 9:3a8624147a4c 84 #if DEBUG
fabeltranm 9:3a8624147a4c 85 command.printf("%i, segundos", tm);
fabeltranm 9:3a8624147a4c 86 #endif
fabeltranm 9:3a8624147a4c 87 led=1;
fabeltranm 6:cb6b868465c3 88 wait(tm);
fabeltranm 5:bf9591a365a4 89 led=0;
fabeltranm 5:bf9591a365a4 90
fabeltranm 5:bf9591a365a4 91 }
fabeltranm 7:fab201aa45b7 92 void command_exe()
fabeltranm 7:fab201aa45b7 93 {
fabeltranm 9:3a8624147a4c 94 #if DEBUG
fabeltranm 9:3a8624147a4c 95 command.printf("Ejecutando comando: ");
fabeltranm 9:3a8624147a4c 96 #endif
fabeltranm 7:fab201aa45b7 97
fabeltranm 7:fab201aa45b7 98 switch (buffer_command[COMM_N]){
fabeltranm 7:fab201aa45b7 99
fabeltranm 9:3a8624147a4c 100 case (LED_NC):
fabeltranm 9:3a8624147a4c 101 #if DEBUG
fabeltranm 9:3a8624147a4c 102 command.printf("LED on\n");
fabeltranm 9:3a8624147a4c 103 #endif
fabeltranm 9:3a8624147a4c 104
fabeltranm 9:3a8624147a4c 105 command_led(buffer_command[INITPARAMETER]);
fabeltranm 7:fab201aa45b7 106 break;
fabeltranm 7:fab201aa45b7 107 case (DOT_NC):
fabeltranm 7:fab201aa45b7 108 #if DEBUG
fabeltranm 7:fab201aa45b7 109 command.printf("draw dot\n");
fabeltranm 7:fab201aa45b7 110 #endif
fabeltranm 7:fab201aa45b7 111
fabeltranm 7:fab201aa45b7 112 break;
fabeltranm 7:fab201aa45b7 113
fabeltranm 7:fab201aa45b7 114 case LINE_NC:
fabeltranm 7:fab201aa45b7 115 #if DEBUG
fabeltranm 7:fab201aa45b7 116 command.printf("draw line\n");
fabeltranm 7:fab201aa45b7 117 #endif
fabeltranm 7:fab201aa45b7 118
fabeltranm 7:fab201aa45b7 119
fabeltranm 7:fab201aa45b7 120 break;
fabeltranm 7:fab201aa45b7 121
fabeltranm 7:fab201aa45b7 122 case RECTANGLE_NC:
fabeltranm 7:fab201aa45b7 123 #if DEBUG
fabeltranm 7:fab201aa45b7 124 command.printf("draw rectabgle\n");
fabeltranm 7:fab201aa45b7 125 #endif
fabeltranm 7:fab201aa45b7 126
fabeltranm 7:fab201aa45b7 127
fabeltranm 7:fab201aa45b7 128 break;
fabeltranm 7:fab201aa45b7 129
fabeltranm 7:fab201aa45b7 130 default:
fabeltranm 7:fab201aa45b7 131
fabeltranm 7:fab201aa45b7 132 #if DEBUG
fabeltranm 7:fab201aa45b7 133 command.printf("comando no encontrado\n");
fabeltranm 7:fab201aa45b7 134 #endif
fabeltranm 7:fab201aa45b7 135
fabeltranm 7:fab201aa45b7 136
fabeltranm 7:fab201aa45b7 137 }
fabeltranm 7:fab201aa45b7 138 }
fabeltranm 7:fab201aa45b7 139
fabeltranm 7:fab201aa45b7 140
fabeltranm 7:fab201aa45b7 141
fabeltranm 0:55d11eeb0faf 142 int main() {
fabeltranm 0:55d11eeb0faf 143 #if DEBUG
fabeltranm 0:55d11eeb0faf 144 command.printf("inicio con debug\n");
fabeltranm 0:55d11eeb0faf 145 #else
fabeltranm 0:55d11eeb0faf 146 command.printf("inicio sin debug\n");
fabeltranm 0:55d11eeb0faf 147 #endif
fabeltranm 0:55d11eeb0faf 148 uint8_t val;
fabeltranm 0:55d11eeb0faf 149 while(1){
fabeltranm 0:55d11eeb0faf 150 val=command.getc();
fabeltranm 0:55d11eeb0faf 151 if (val== '<'){
fabeltranm 0:55d11eeb0faf 152 Read_command();
fabeltranm 4:bcc2d1bebb95 153 if (check_command()){
fabeltranm 7:fab201aa45b7 154 command_exe();
fabeltranm 8:cd9b52716920 155 }else{
fabeltranm 6:cb6b868465c3 156 #if DEBUG
fabeltranm 8:cd9b52716920 157 command.printf("\n ERROR COMANDO -> ");
fabeltranm 8:cd9b52716920 158 echo_command();
fabeltranm 6:cb6b868465c3 159 #endif
fabeltranm 8:cd9b52716920 160 }
fabeltranm 8:cd9b52716920 161 }else{
fabeltranm 8:cd9b52716920 162 #if DEBUG
fabeltranm 8:cd9b52716920 163 command.printf("error de inicio de trama: ");
fabeltranm 8:cd9b52716920 164 command.putc(val);
fabeltranm 8:cd9b52716920 165 #endif
fabeltranm 3:7c26d338e372 166 }
fabeltranm 3:7c26d338e372 167
fabeltranm 0:55d11eeb0faf 168 }
fabeltranm 0:55d11eeb0faf 169 }
fabeltranm 0:55d11eeb0faf 170