Problema con el USB y VirtualBox en Ubuntu 12.10

[singlepic id=7 w=320 h=240 float=right]Normalmente trabajo con Ubuntu, y cuando necesito probar algún otro sistema, o necesito trabajar con Windows, lo hago a través de un sistema virtual con VirtualBox, normalmente no tengo ningún problema con el, pero después de una actualización del programa, en los sistemas instalados dejo de funcionar la detención de los dispositivos conectados por usb, como el arduino, las impresoras, etc. Después de dar muchas vueltas por la configuración del VirtualBox, y no encontrar nada raro, me puse a buscar por Internet, y  encontré este mismo problema pero con la versión 11.10 del Ubuntu. Y como por probar no se pierde nada, lo probé en mi Ubuntu 12.10, y problema resuelto.

Por lo visto el fallo viene por no tener el usuario con el que se ha abierto la sesión dentro del grupo que crea el VirtualBox cuando se instala.

Para solucionar este problema solo tendremos que añadir nuestro usuario dentro del grupo “vboxusers” de la siguiente manera:

1º.- Abrimos una terminal de consola, seguramente se pueda hacer mediante algun programa grafico, pero cuando se trata de configuraciones me gusta hacerlo mediante una consola.

2º .- Comprobamos que el grupo “vboxusers” existe, una mandera fácil de hacerlo es tecleando “groupmod” y pulsamos varias veces la tecla tabulador, y esto nos mostrara la lista de grupos actuales.

3º.- Si no existe los creamos. Para crearlo solo tenemos que poner en la terminal de la consola “sudo addgroup vboxusers“. Nos pide la clave de root y listo. Ya tenemos el grupo “vboxusers” creado.

4º.- Para añadir nuestro usuario al grupo “vboxusers” tecleamos en la terminal de la consola “sudo usermod -a -G vboxusers NombreDeUsuario”. Esto añadira nuestro usuario al grupo “vboxusers”.

Después de estos paso, solo tendremos que reiniciar la sesión. Y los sistemas instalados con VirtualBox ya reconocerán nuestros dispositivos conectados por usb.

Un problema tonto, pero que te hace perder mucho tiempo. Espero que os haya servido de ayuda.

Mi primer contacto con Arduino

Ya me ha llegado mi placa de Arduino, me he decido por el modelo mas normal, el Arduino UNO, en la versión SMD, Entre las diferencias que he podido observar con respecto a la otra versión del arduino UNO rev. 3, es que esta, el procesador es la versión de soldadura en superficie, mucho mas pequeño en tamaño que el que viene en la versión normal, Arduino UNO Rev. 3, y la disposición de alguno componentes, como puede ser el botón del reset, pero ha efectos prácticos,  son iguales.

Imagen del Arduino UNO versión SMD[singlepic id=11 w=320 h=240 float=center]

Imagen del Arduino UNO versión Rev. 3[singlepic id=12 w=320 h=240 float=center]

Para tener un primer contacto con el, he probado el típico “Hola mundo” pero para un arduino, es decir, encender y apagar un led. Hay varias formas de hacer esta prueba.

1º.- Encender y apagar el led que trae la propia placa, este led esta conectado al pin 13, solo tendremos que hacer que nuestro programa mande la señal necesaria por ese pin y el led se encenderá o se apagara.

2º.- Instalar nuestro propio led al pin 13, solo tendremos que insertar la patilla del positivo (ánodo, la patilla más larga) en el pin 13 y la patilla del negativo (catado, la patilla más corta) en el pin de masa, el pin a la izquierda del pin 13, no hace falta poner la resistencia que se necesita para hacer funcionar cualquier led normalmente, este pin aprovecha la resistencia que tiene para el led que viene en la placa para hacerlo funcionar. Y ya estaría listo, ejecutamos el mismo programa que en el caso anterior y ya lo tendríamos funcionando. En este caso se encenderían los 2 leds, tanto el que acabamos de instalar nosotros, como el que trae la propia placa.

3º.- Instalar nuestro propio led en un pin que no sea el 13, en este caso la única diferencia que tenemos con respecto a los casos anteriores, es que tendremos que instalar junto al led la resistencia necesaria, en este caso, una resistencia de 220 oh. Cambiamos en nuestro programa el pin 13 por el pin donde tenemos conectado nuestro led y a funcionar.

Código para encender y apagar un led  cada 1 seg con el Arduino.

/* Blinking LED
 * ------------
 *
 * turns on and off a light emitting diode(LED) connected to a digital  
 * pin, in intervals of 2 seconds. Ideally we use pin 13 on the Arduino 
 * board because it has a resistor attached to it, needing only an LED

 *
 * Created 1 June 2005
 * copyleft 2005 DojoDave <http://www.0j0.org>
 * http://arduino.berlios.de
 *
 * based on an orginal by H. Barragan for the Wiring i/o board
 */

int ledPin = 13;                 // LED conectado al pin digital 13

void setup()
{
  pinMode(ledPin, OUTPUT);      // Establecer el pin a modo salida
}

void loop()
{
                                // Este ciclo se repetira hasta que se apage el Arduino
  digitalWrite(ledPin, HIGH);   // Encender el LED
  delay(1000);                  // Esperar un segundo
  digitalWrite(ledPin, LOW);    // Apagar el LED
  delay(1000);                  // Esperar un segundo
}

Este programa esta en el menú de ejemplos del software del Arduino.

Y de momento es todo. Espero que te haya servido de ayuda.

Preguntar antes de cerrar un programa en C#

[singlepic id=5 w=320 h=240 float=right]Muchas veces cuando cerramos nuestro programa en C# necesitamos verificar que realmente se quiere cerrar el programa. Para hacer esto solo necesitamos utilizar la función “FormClosing”

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dialogo = MessageBox.Show("¿Desea cerrar el programa?",
               "Cerrar el programa", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (dialogo == DialogResult.No)
    {
        e.Cancel = true;
    }
    else
    {
        e.Cancel = false;
    }
}

Para cancelar el cierre de la aplicación solo tenemos que poner a “true” la función “e.cancel”, esto hará que se cancele el cierre del programa.

A si de fácil y sencillo o no?

Verificar en C# el formato de una dirección de e-mail

[singlepic id=4 w=320 h=240 float=right]Cuando queremos que el usuario introduzca una dirección de e-mail en nuestro programa en C#, siempre nos queda la duda si la dirección es correcta o no. El siguiente código en C# nos permite comprobar que la dirección de e-mail que se introduzca este por lo menos en su formato correcto, es decir, “nombre”@”Dominio”.”extensión”. Esta comprobación no asegura que la dirección sea valida, solo que el formato introducido es el correcto.

Para hacer la comprobación nos ayudamos de la clase Regex, esta función permite mediante un patrón verificar si una cadena cumple con ese patrón  Para poder utilizar la clase Regex tenemos que añadir el siguiente nombre de espacio

using System.Text.RegularExpressions;

Código  que comprueba el formato del e-mail introducido:

public static bool ComprobarFormatoEmail(string sEmailAComprobar)
{ 
    String sFormato; 
    sFormato = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
    if (Regex.IsMatch(seMailAComprobar, sFormato)) 
    {
        if (Regex.Replace(seMailAComprobar, sFormato, String.Empty).Length == 0) 
        { 
            return true; 
        } 
        else
        { 
            return false; 
        } 
    } 
    else
    { 
        return false;
    }
}

La función nos devolverá “true”, si el formato del email es correcto, o “false” si el formato del email es incorrecto. Ejemplo de como trabajar con la función.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

// Para la función regex
using System.Text.RegularExpressions;

namespace Verificar_Correo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public static bool ComprobarFormatoEmail(string seMailAComprobar)
        { 
            String sFormato; 
            sFormato = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (Regex.IsMatch(seMailAComprobar, sFormato)) 
            {
                if (Regex.Replace(seMailAComprobar, sFormato, String.Empty).Length == 0) 
                { 
                    return true; 
                } 
                else
                { 
                    return false; 
                } 
            } 
            else
            { 
                return false;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (ComprobarFormatoEmail(tbEmail.Text) == false)
            {
                lEmailCorrecto.Text = "Dirección no valida";
                lEmailCorrecto.ForeColor = Color.Red;
            }
            else
            {
                lEmailCorrecto.Text = "Dirección valida";
                lEmailCorrecto.ForeColor = Color.Green;
            }
        }
    }
}

Puedes descargar todos los ficheros desde aquí.

 

Y esto es todo, sabiendo que el formato del email  es correcto, la siguiente comprobación seria saber si la dirección es valida, es decir, si pertenece a una cuenta real. Pero eso sera para otro post.