Advertisement
nekonoyami

morse (processing)

Nov 26th, 2015
947
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import processing.serial.*;
  2. import controlP5.*;
  3.  
  4. Serial puerto;
  5. ControlP5 ventana;
  6. String alerta = "", morse = "", palabra = "";
  7. //array con los caracteres validos
  8. char caracteres [] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z','0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ',', '?', '"', '!'};
  9.  
  10. void setup(){
  11.   //variable que se usa para configurar el campo de texto
  12.   PFont fuente = createFont("arial", 25);
  13.   //se define el tamaño de la ventana
  14.   size(800, 300);
  15.   //se valida si es posible crear una instancia del puerto serial
  16.   //y configura la variable que controlara el puerto
  17.   try{
  18.     puerto = new Serial(this, Serial.list()[0], 9600);
  19.   }
  20.   catch(Exception e){
  21.     //si hay un error se muestra una lista de los puertos disponibles
  22.    println(Serial.list());
  23.   }
  24.   //se inicliza la variable acargo del contenido de la ventana
  25.   ventana = new ControlP5(this);
  26.   //se agrega un campo de texto
  27.   ventana.addTextfield("Palabra", 50, 25, 400, 40)
  28.          .setColor(color(255, 255, 255))
  29.          .setFont(fuente)
  30.          .setFocus(true);
  31.    //se define la fuente para los mensajes de la ventana
  32.   textFont(fuente);
  33. }
  34.  
  35. void draw(){
  36.   //se asigna un color de fondo negro
  37.   background(0);
  38.   //se muestra un texto de alerta (si hay alguna)
  39.   text(alerta, 50, 100);
  40.   text(morse, 50, 100);  
  41.   while(puerto.available() > 0){
  42.     morse += puerto.readString();
  43.   }
  44. }
  45.  
  46. void controlEvent(ControlEvent e){
  47.   //se obtiene el valor del campo de texto
  48.   palabra = e.getStringValue();
  49.   //se valida que el evento se haya detonado por un elemento
  50.   //de la ventana
  51.   if(e.isController()){
  52.     //se verifica que la palabra no tenga ningun caracter invalido
  53.     if(validarPalabra(palabra)){
  54.       //se envia la palabra por el puerto serial
  55.       try{
  56.         puerto.write(palabra);
  57.       }
  58.       catch(Exception a){
  59.         println(palabra.toLowerCase());
  60.       }
  61.         //se borra el mensaje de alerta (si lo hay)
  62.         alerta = "";
  63.         morse = "";
  64.         morse = palabra + "\n";
  65.     }
  66.     else{
  67.       //se muestra el mensaje de alerta con la palabra invalida
  68.       alerta = "la palabra '" + palabra + "' \ncontiene un caracter no disponible";
  69.     }
  70.   }
  71. }
  72.  
  73. void serialEvent(Serial puerto){
  74. }
  75.  
  76. //metodo que se encarga de validar la palabra digitada
  77. boolean validarPalabra(String palabra){
  78.   //variable que cuenta la cantidad de caracteres validos
  79.   int validacion = 0;
  80.   //se eliminan los espacios al inicio y al fin de la palabra
  81.   palabra = palabra.trim().toLowerCase();
  82.   print(palabra);
  83.   //se recorre la palabra digitada caracter por caracter
  84.   for(int i = 0; i < palabra.length(); i++){
  85.     //se recorre el array de caracteres validos
  86.     for(int j = 0; j < caracteres.length; j++){
  87.       //se valida un caracter de la palabra digitada es igual a un caracter valido
  88.       if(palabra.charAt(i) == caracteres[j]){
  89.         //se cuenta un caracter valido
  90.           validacion++;
  91.       }
  92.       //se valida si hay espacios vacios dentro de la palabra digitada
  93.     }
  94.       if(palabra.charAt(i) == ' ')
  95.        validacion++;
  96.   }
  97.   print(validacion);
  98.   print("-");
  99.   println(palabra.length());
  100.   //se valida si la cantidad de caracteres validos es igual a la cantidad
  101.   //de caracteres de la palabra digitada
  102.   if(validacion != palabra.length())
  103.     return false;
  104.   else
  105.     return true;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement