Alyson Castiblanco
/
PARQUEADERO_VERTICAL
Codigo donde falta la comunicacion serial
Diff: main.cpp
- Revision:
- 1:526bdd5faa37
- Parent:
- 0:89b318e49395
- Child:
- 2:3936d249a67c
--- a/main.cpp Sat Mar 17 00:57:56 2018 +0000 +++ b/main.cpp Tue Sep 04 02:15:49 2018 +0000 @@ -4,18 +4,6 @@ -/* -El sitema tiene tres estados: -1. Standby: estado que indica que esta en espera de un telecomando (Ejecutar 0 guardar) -2. Drawing: estado en donde el piccolo eejecuta las ordenes giardadas en el array - de memora hasta encontrar el comando CM_STOP -3. Saving: estado donde el sistema recibe lso datos y lso almacena en memoria acorde - a los comandos de 0xfd, oxfc, 0xfb,0cfa, se sake de este modo cuado se recibe - el comando CM_STOP - -todo telecomando debe finalizar con el dato CM_END -*/ - Serial command(USBTX, USBRX); @@ -24,17 +12,14 @@ int main() { init_servo(); init_serial(); - draw(); - nodraw(); - home(); + debug_m("inicio \n"); uint32_t read_cc; while(1) { read_cc=read_command(); switch (read_cc) { - case CM_DRAWING: drawing(); break; - case CM_SAVING: saving(); break; + case 0x01: moving(); break; default: debug_m("error de comando. \nSe espera 0xFEF0 o 0xFFF0 \n");break ; } } @@ -44,88 +29,31 @@ uint32_t read_command() { - // retorna los byte recibidos concatenados en un entero, se reciben maximo 4 bytes, - // recibe hasta que encuetra un fin de comando "CM_END". - // Ejemplo: para el comando drawing se - // espera un byte, por lo que al recibir 0xFF y 0xF0 la funcióm retorna el 0xff - // siempre y cuando se reciba el fin de dato F0 de lo contrario retorna un cero - // para el caso del comando vertex2d se espera recibir 3 bytes, 1 del comando - // y dos bytes para x y y, se retorna la concatenación de los tres bytes siempre y - // cuando el cuarto byte sea CM_END de lo contrario retorna un cero + // retorna los byte recibidos concatenados en un entero, - uint32_t val=0; - uint8_t cnt=0; + + + char intc=command.getc(); - char endc=command.getc(); - - while(endc != CM_END && cnt <4) { - if(endc!=CM_END) - val=((val<<8) +endc); - endc=command.getc(); - cnt++; - } - if(endc==CM_END) - return val; - return 0; //al retornar 0 indica que no se recibe el comando + while(intc != '<') + intc=command.getc(); + return intc; } + + void init_serial() { command.baud(9600); } -void drawing(){ - // la funcion se ejecuta siemrpe y cuando exista datos validos para leer de - // memoria - debug_m("se esta ejecutando el dibujo... \n"); - - uint8_t error=0; - MEM_TYPE dato; - - tail_reset(); - - while(error==0){ - error = mem_get(&dato); - if (error==0) { - switch (dato) { - case CM_DRAW: - debug_m("-> Baja Z\n"); - draw(); - break ; - case CM_NODRAW: - debug_m("-> Sube Z\n"); - nodraw(); - break ; - default: - int y = (uint8_t)(dato); - int x = (uint8_t)(dato>>8); - char ncomm = (uint8_t)(dato>>16); - - if (ncomm == CM_VERTEX2D) { - debug_m("-> Mover piccolo x a %d y y a %d \n",x,x, y); - vertex2d(x,y); - }else - debug_m("-> ERROR DE COMMANDO: %d %d %d \n " ,ncomm,x,y,y); - break; - } - } - } +void moving(){ + debug_m("se inicia el comado mover..\n"); - debug_m("fin del comando dibujar..\n"); - -} - - -void saving(){ - debug_m("se inicia el comado guardar..\n"); - - MEM_TYPE dato=0; - mem_free(); - while(dato !=CM_STOP){ - dato = read_command(); - if (dato !=CM_STOP) - mem_put(dato); - } + char nmotor=command.getc(); + char grados=command.getc(); + char endc=command.getc(); + mover_ser(nmotor,grados); debug_m("fin del comado guardar..\n"); }