serial port

  1. include "mbed.h"

enum estados_serie{INICIO, PESOS, WRITE, READ, LED1, RED1, GRREN1, BLUE1, ANALOG, DIGITAL, LED2, RED2, GREEN2, BLUE2, E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, VERIFICACION, EXCL};

Definimos que el puerto serie se llama pc Serial pc(USBTX, USBRX); Variable donde se guarda lo leido char c = '\0'; bit usado como flag para procesar datos bool newdata = false; Se pone en true cuando hay nuevos datos

Creamos los tres leds pra usar DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3);

Callback cuando se detecta una entrada void onCharReceived(){ Copiamos lo leido en c c = pc.getc(); newdata = true; }

int main() { Apagamos los leds led1 = 1; led2 = 1; led3 = 1; Ejecutar onCharReceived por cada entrada por puerto pc.attach(&onCharReceived);

while (true) { if(newdata){ newdata = false; printf("Recibimos '%c' \r\n",c);

switch(c){ case 'INICIO': if (c == $) { c=PESOS; } else { c=INICIO; } break; case 'PESOS': if (c == W) { c=WRITE; } else { c=INICIO; } break; case 'WRITE': if (c == L) { c=LED1; } else { c=INICIO; } break; case 'LED1': if(c == R) { c=RED1; } if(c == G) { c=GREEN1; } if(c == B) { c=BLUE1; } if(c != R || c != G || c != B) { c=INICIO; } break; case 'RED1': if(c == 1) { c=E1; } if(c == 0) { c=E2; } if(c != 1 || c != 0) { c=INICIO; } break; case 'GREEN1': if(c == 1) { c=E3; } if(c == 0) { c=E4; } if(c != 1 || c != 0) { c=INICIO; } break; case 'BLUE1': if(c == 1) { c=E5; } if(c == 0) { c=E6; } if(c != 1 || c != 0) { c=INICIO; } break; case 'E1': if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'E2'; if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'E3'; if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'E4'; if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'E5'; if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'E6'; if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'ANALOG': if(c == 1) { c=E7; } if(c == 0) { c=E8; } if(c != 1 || c != 0) { c=INICIO; } break; case 'DIGITAL': if(c == 1) { c=E5; } if(c == 0) { c=E6; } if(c != 1 || c != 0) { c=INICIO; } break; case 'LED2': if(c == R) { c=RED2; } if(c == G) { c=GREEN2; } if(c == B) { c=BLUE2; } if(c != R || c != G || c != B) { c=INICIO; } break; case 'RED2': if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break; case 'GREEN2': if(c == EYM) { c=VERIFICACION; } else { c=INICIO; } break;

} } } }


Please log in to post comments.