Vanesa Lara Cruz / Mbed 2 deprecated serial-protocol-V2

Dependencies:   mbed

Fork of 02_LAB_serial_protocol by ferney alberto beltran molina

Committer:
fabeltranm
Date:
Fri Oct 20 00:50:00 2017 +0000
Revision:
20:b7f2e428b24c
Parent:
19:082e74f5e5ab
update debug draw

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fabeltranm 10:d2bf51fdc68a 1
fabeltranm 10:d2bf51fdc68a 2
fabeltranm 10:d2bf51fdc68a 3 #include "draw.h"
fabeltranm 10:d2bf51fdc68a 4 #include "main.h"
fabeltranm 0:55d11eeb0faf 5 #include "mbed.h"
fabeltranm 0:55d11eeb0faf 6
fabeltranm 10:d2bf51fdc68a 7
fabeltranm 0:55d11eeb0faf 8 Serial command(USBTX, USBRX);
fabeltranm 10:d2bf51fdc68a 9
fabeltranm 0:55d11eeb0faf 10
fabeltranm 10:d2bf51fdc68a 11 uint8_t buffer_cmd[BUFF_SIZE]={0,0,0,0};
fabeltranm 7:fab201aa45b7 12
fabeltranm 7:fab201aa45b7 13
fabeltranm 7:fab201aa45b7 14
fabeltranm 0:55d11eeb0faf 15
fabeltranm 10:d2bf51fdc68a 16 void print_num(uint8_t val) {
fabeltranm 10:d2bf51fdc68a 17 if (val <10)
fabeltranm 1:0bcd96e56022 18 command.putc(val+0x30);
fabeltranm 1:0bcd96e56022 19 else
fabeltranm 2:200a9507b696 20 command.putc(val-9+0x40);
fabeltranm 10:d2bf51fdc68a 21
fabeltranm 1:0bcd96e56022 22 }
fabeltranm 10:d2bf51fdc68a 23
fabeltranm 1:0bcd96e56022 24 void print_bin2hex (uint8_t val)
fabeltranm 1:0bcd96e56022 25 {
fabeltranm 1:0bcd96e56022 26 command.printf(" 0x");
fabeltranm 1:0bcd96e56022 27 print_num(val>>4);
fabeltranm 10:d2bf51fdc68a 28 print_num(val&0x0f);
fabeltranm 1:0bcd96e56022 29 }
fabeltranm 1:0bcd96e56022 30
fabeltranm 10:d2bf51fdc68a 31
fabeltranm 0:55d11eeb0faf 32 void Read_command()
fabeltranm 0:55d11eeb0faf 33 {
fabeltranm 10:d2bf51fdc68a 34 // TODO : TIMEOUT UART SERIAL
fabeltranm 0:55d11eeb0faf 35 for (uint8_t i=0; i<BUFF_SIZE;i++)
fabeltranm 10:d2bf51fdc68a 36 buffer_cmd[i]=command.getc();
fabeltranm 0:55d11eeb0faf 37 }
fabeltranm 0:55d11eeb0faf 38
fabeltranm 0:55d11eeb0faf 39 void echo_command()
fabeltranm 0:55d11eeb0faf 40 {
fabeltranm 0:55d11eeb0faf 41 for (uint8_t i=0; i<BUFF_SIZE;i++)
fabeltranm 10:d2bf51fdc68a 42 print_bin2hex(buffer_cmd[i]);
fabeltranm 0:55d11eeb0faf 43
fabeltranm 0:55d11eeb0faf 44 }
fabeltranm 0:55d11eeb0faf 45
fabeltranm 0:55d11eeb0faf 46
fabeltranm 10:d2bf51fdc68a 47 bool check_command()
fabeltranm 5:bf9591a365a4 48 {
fabeltranm 10:d2bf51fdc68a 49 if (buffer_cmd[BUFF_SIZE-1]== '>')
fabeltranm 10:d2bf51fdc68a 50 return 1;
fabeltranm 10:d2bf51fdc68a 51 return 0;
fabeltranm 10:d2bf51fdc68a 52 }
fabeltranm 10:d2bf51fdc68a 53
fabeltranm 10:d2bf51fdc68a 54
fabeltranm 10:d2bf51fdc68a 55 void command_led(){
fabeltranm 10:d2bf51fdc68a 56 uint16_t sec = buffer_cmd[TIME_LED_S1];
fabeltranm 10:d2bf51fdc68a 57 sec = (sec <<8) + buffer_cmd[TIME_LED_S0];
fabeltranm 10:d2bf51fdc68a 58 uint16_t msec = buffer_cmd[TIME_LED_mS1];
fabeltranm 10:d2bf51fdc68a 59 msec = (msec <<8) + buffer_cmd[TIME_LED_mS0];
fabeltranm 10:d2bf51fdc68a 60 #if DEBUG
fabeltranm 10:d2bf51fdc68a 61 command.printf("LED ON: %i segundos y %i milisegundos\n", sec, msec);
fabeltranm 10:d2bf51fdc68a 62 #endif
fabeltranm 10:d2bf51fdc68a 63 led_on(sec,msec);
fabeltranm 10:d2bf51fdc68a 64
fabeltranm 10:d2bf51fdc68a 65
fabeltranm 10:d2bf51fdc68a 66 }
fabeltranm 10:d2bf51fdc68a 67 void command_dot(){
fabeltranm 10:d2bf51fdc68a 68 uint8_t x=buffer_cmd[DOT_POS_X];
fabeltranm 10:d2bf51fdc68a 69 uint8_t y=buffer_cmd[DOT_POS_Y];
fabeltranm 10:d2bf51fdc68a 70
fabeltranm 10:d2bf51fdc68a 71 #if DEBUG
fabeltranm 10:d2bf51fdc68a 72 command.printf("draw dot: Coord X= %i y Coord Y = %i\n", x,y);
fabeltranm 9:3a8624147a4c 73 #endif
fabeltranm 10:d2bf51fdc68a 74 vertex2d(x,y);
fabeltranm 10:d2bf51fdc68a 75 draw();
fabeltranm 10:d2bf51fdc68a 76 nodraw();
fabeltranm 10:d2bf51fdc68a 77
fabeltranm 10:d2bf51fdc68a 78 }
fabeltranm 10:d2bf51fdc68a 79 void command_line(){
fabeltranm 10:d2bf51fdc68a 80 uint8_t xi=buffer_cmd[LINE_POS_Xi];
fabeltranm 10:d2bf51fdc68a 81 uint8_t xf=buffer_cmd[LINE_POS_Xf];
fabeltranm 10:d2bf51fdc68a 82 uint8_t yi=buffer_cmd[LINE_POS_Yi];
fabeltranm 10:d2bf51fdc68a 83 uint8_t yf=buffer_cmd[LINE_POS_Yf];
fabeltranm 10:d2bf51fdc68a 84
fabeltranm 10:d2bf51fdc68a 85 #if DEBUG
fabeltranm 12:b780833f517e 86 command.printf("draw line: ");
fabeltranm 12:b780833f517e 87 command.printf("Coord Xi= %i Coord Yi = %i Coord Xf= %i Coord Yf = %i\n", xi,yi,xf,yf);
fabeltranm 10:d2bf51fdc68a 88 #endif
fabeltranm 20:b7f2e428b24c 89 line( xi, yi, xf, yf);
fabeltranm 17:a0b884f78802 90
fabeltranm 20:b7f2e428b24c 91 }
fabeltranm 10:d2bf51fdc68a 92
fabeltranm 10:d2bf51fdc68a 93 void command_rectangle(){
fabeltranm 10:d2bf51fdc68a 94 uint8_t x=buffer_cmd[REC_POS_X];
fabeltranm 10:d2bf51fdc68a 95 uint8_t y=buffer_cmd[REC_POS_Y];
fabeltranm 10:d2bf51fdc68a 96 uint8_t width=buffer_cmd[REC_WIDTH];
fabeltranm 10:d2bf51fdc68a 97 uint8_t height=buffer_cmd[REC_HEIGHT ];
fabeltranm 10:d2bf51fdc68a 98
fabeltranm 10:d2bf51fdc68a 99 #if DEBUG
fabeltranm 10:d2bf51fdc68a 100 command.printf("draw rectangle: ");
fabeltranm 10:d2bf51fdc68a 101 command.printf("Coord X= %i Coord Y = %i width = %i height= %i\n", x,y,width,height);
fabeltranm 10:d2bf51fdc68a 102 #endif
fabeltranm 10:d2bf51fdc68a 103 rectangle( x, y, width, height);
fabeltranm 10:d2bf51fdc68a 104 }
fabeltranm 13:4226825e2060 105 void command_cicle(){
fabeltranm 20:b7f2e428b24c 106 uint8_t x=buffer_cmd[CICLE_POS_X];
fabeltranm 20:b7f2e428b24c 107 uint8_t y=buffer_cmd[CICLE_POS_Y];
fabeltranm 20:b7f2e428b24c 108 uint8_t r=buffer_cmd[CICLE_POS_R];
fabeltranm 13:4226825e2060 109 #if DEBUG
fabeltranm 13:4226825e2060 110 command.printf("draw cicle: ");
fabeltranm 20:b7f2e428b24c 111 command.printf("Centro X= %i Centro Y = %i radio= %i \n", x,y,r);
fabeltranm 13:4226825e2060 112 #endif
fabeltranm 20:b7f2e428b24c 113 circle(x,y,r);
fabeltranm 13:4226825e2060 114 }
fabeltranm 14:124051c4524a 115 void command_home(){
fabeltranm 14:124051c4524a 116 #if DEBUG
fabeltranm 14:124051c4524a 117 command.printf("pos home ");
fabeltranm 14:124051c4524a 118 #endif
fabeltranm 14:124051c4524a 119 home();
fabeltranm 14:124051c4524a 120 }
fabeltranm 13:4226825e2060 121 void command_rstepservo(){
fabeltranm 13:4226825e2060 122 #if DEBUG
fabeltranm 13:4226825e2060 123 command.printf("config rstepservo: ");
fabeltranm 13:4226825e2060 124 #endif
fabeltranm 13:4226825e2060 125 }
fabeltranm 13:4226825e2060 126 void command_sstime(){
fabeltranm 13:4226825e2060 127 #if DEBUG
fabeltranm 13:4226825e2060 128 command.printf("config tiempo entre movimientos de los servos: ");
fabeltranm 20:b7f2e428b24c 129 command.printf("SSTIME = %i\n", buffer_cmd[POS_1]);
fabeltranm 13:4226825e2060 130 #endif
fabeltranm 14:124051c4524a 131 put_sstime(buffer_cmd[POS_1]);
fabeltranm 13:4226825e2060 132 }
fabeltranm 13:4226825e2060 133 void command_stop(){
fabeltranm 13:4226825e2060 134 #if DEBUG
fabeltranm 13:4226825e2060 135 command.printf("stop");
fabeltranm 13:4226825e2060 136 #endif
fabeltranm 13:4226825e2060 137 }
fabeltranm 13:4226825e2060 138 void command_pause(){
fabeltranm 13:4226825e2060 139 #if DEBUG
fabeltranm 20:b7f2e428b24c 140 command.printf("piccolo en pausa ");
fabeltranm 13:4226825e2060 141 #endif
fabeltranm 13:4226825e2060 142 }
fabeltranm 13:4226825e2060 143 void command_reanudar(){
fabeltranm 13:4226825e2060 144 #if DEBUG
fabeltranm 20:b7f2e428b24c 145 command.printf("reanuda piccolo ");
fabeltranm 13:4226825e2060 146 #endif
fabeltranm 13:4226825e2060 147 }
fabeltranm 13:4226825e2060 148 void command_stepmotor(){
fabeltranm 13:4226825e2060 149 #if DEBUG
fabeltranm 20:b7f2e428b24c 150 command.printf("comando mover piccolo: ");
fabeltranm 13:4226825e2060 151 #endif
fabeltranm 13:4226825e2060 152 }
fabeltranm 10:d2bf51fdc68a 153
fabeltranm 7:fab201aa45b7 154 void command_exe()
fabeltranm 7:fab201aa45b7 155 {
fabeltranm 9:3a8624147a4c 156 #if DEBUG
fabeltranm 10:d2bf51fdc68a 157 command.printf("Ejecutando comando: \n");
fabeltranm 7:fab201aa45b7 158 #endif
fabeltranm 10:d2bf51fdc68a 159
fabeltranm 10:d2bf51fdc68a 160 switch (buffer_cmd[COMM_N]){
fabeltranm 13:4226825e2060 161 case COMMAND_LED : command_led(); break;
fabeltranm 13:4226825e2060 162 case COMMAND_DOT : command_dot(); break;
fabeltranm 13:4226825e2060 163 case COMMAND_LINE: command_line(); break;
fabeltranm 13:4226825e2060 164 case COMMAND_RECTANGLE: command_rectangle(); break;
fabeltranm 13:4226825e2060 165 case COMMAND_CICLE: command_cicle(); break;
fabeltranm 14:124051c4524a 166 case COMMAND_HOME: command_home(); break;
fabeltranm 13:4226825e2060 167 case COMMAND_RSTEPSERVO: command_rstepservo(); break;
fabeltranm 13:4226825e2060 168 case COMMAND_SS_TIME: command_sstime(); break;
fabeltranm 13:4226825e2060 169 case COMMAND_STOP : command_stop(); break;
fabeltranm 13:4226825e2060 170 case COMMAND_PAUSA: command_pause(); break;
fabeltranm 13:4226825e2060 171 case COMMAND_REANUDAR: command_reanudar(); break;
fabeltranm 13:4226825e2060 172 case MOVER_STEPMOTOR: command_stepmotor(); break;
fabeltranm 10:d2bf51fdc68a 173 default:
fabeltranm 10:d2bf51fdc68a 174 #if DEBUG
fabeltranm 10:d2bf51fdc68a 175 command.printf("comando no encontrado\n");
fabeltranm 10:d2bf51fdc68a 176 #endif
fabeltranm 10:d2bf51fdc68a 177 }
fabeltranm 7:fab201aa45b7 178 }
fabeltranm 7:fab201aa45b7 179
fabeltranm 7:fab201aa45b7 180
fabeltranm 7:fab201aa45b7 181
fabeltranm 0:55d11eeb0faf 182 int main() {
fabeltranm 0:55d11eeb0faf 183 #if DEBUG
fabeltranm 0:55d11eeb0faf 184 command.printf("inicio con debug\n");
fabeltranm 0:55d11eeb0faf 185 #else
fabeltranm 0:55d11eeb0faf 186 command.printf("inicio sin debug\n");
fabeltranm 0:55d11eeb0faf 187 #endif
fabeltranm 0:55d11eeb0faf 188 uint8_t val;
fabeltranm 0:55d11eeb0faf 189 while(1){
fabeltranm 0:55d11eeb0faf 190 val=command.getc();
fabeltranm 0:55d11eeb0faf 191 if (val== '<'){
fabeltranm 0:55d11eeb0faf 192 Read_command();
fabeltranm 4:bcc2d1bebb95 193 if (check_command()){
fabeltranm 7:fab201aa45b7 194 command_exe();
fabeltranm 8:cd9b52716920 195 }else{
fabeltranm 6:cb6b868465c3 196 #if DEBUG
fabeltranm 8:cd9b52716920 197 command.printf("\n ERROR COMANDO -> ");
fabeltranm 8:cd9b52716920 198 echo_command();
fabeltranm 10:d2bf51fdc68a 199 command.printf("\n");
fabeltranm 6:cb6b868465c3 200 #endif
fabeltranm 8:cd9b52716920 201 }
fabeltranm 8:cd9b52716920 202 }else{
fabeltranm 8:cd9b52716920 203 #if DEBUG
fabeltranm 8:cd9b52716920 204 command.printf("error de inicio de trama: ");
fabeltranm 8:cd9b52716920 205 command.putc(val);
fabeltranm 8:cd9b52716920 206 #endif
fabeltranm 3:7c26d338e372 207 }
fabeltranm 3:7c26d338e372 208
fabeltranm 0:55d11eeb0faf 209 }
fabeltranm 0:55d11eeb0faf 210 }
fabeltranm 0:55d11eeb0faf 211