Uso de clases con NetDuino

Uno de los inconvenientes que nos encontramos al usar la clase SerialPort de NetDuino es que solo nos permitía enviar y recibir bytes por el puerto Serial. Pero eso tampoco es mucho problema ya que en un momento podemos montarnos nuestra propia clase que haga todo lo de la de serie y mucho mas.

Para ello necesitamos crear una nueva clase desde el IDE, esta clase llamada en esta ocasión SerialStream pertenecerá a un namespace distinto (o no, según queramos) llamado com.giltesa.netduino.io

Además podemos observar como después del nombre de la clase aparece el carácter :, y después el nombre de otra clase. Aquí estamos indicando que nuestra clase hereda de la clase SerialPort. De este modo todas las propiedades y métodos de la clase SerialPort estarán disponibles en la clase SerialStream y podremos dejarlos como estén, sobreescribirlos o añadir nuevos métodos como es nuestro caso.

Aclarar también que el nombre de nuestra clase en vez de SerialStream podría haber sido Serial a secas. Pero luego nos reñirían nuestra clase Serial con otra que tiene el IDE y deberíamos o bien no poner el using (import) del espacio de nombres para que no estén las dos a la vez o añadir toda la jerarquía a mano cada vez. Es decir:

Como eso es un rollo se le da otro nombre y punto 😉

Con nuestra clase creada nos falta añadir los constructores y los métodos. Recordemos que la clase de la que heredamos, SerialPort, tiene 5 constructores distintos. Entonces podemos crear nuestros 5 constructores que simplemente tienen que llamar al costructor padre correspondiente, o podemos crear uno genérico con los argumentos con un valor por defecto:

Como vemos el constructor public SerialStream(...) : base(...){...}, llama a su vez al constructor padre, eso se indica con : base(), y le envía los parámetros en orden y en la cantidad necesaria para que coincida con uno de los cinco constructores deseados.

En nuestro caso siempre llamamos al constructor SerialPort con todos sus parámetros posibles, y al usuario le obligamos a indicar como mínimo el número de puerto, el resto son opcionales y de no indicarlos se envían con un valor indicado por defecto.

Cuando rellenemos los parámetros del constructor lo debemos de hacer en orden, si quisiéramos poner el primero y el ultimo deberíamos de poner todos los que haya en medio o bien indicarle de forma explicita que valor corresponde a cada parámetro:

Ya nos quedaría añadir todos los métodos que queramos para facilitarnos el trabajo, dos de ellos podrían ser print() y println() que harán uso de WriteByte(). Así podremos imprimir Strings directamente.

Nuestro primer nuevo método pasa el String a un array de bytes y después estos se envían por el puerto Serial uno a uno con WriteByte.
En cuanto al segundo método hace uso de del nuestro primer método pero antes de enviar el texto le concatena un salto de linea.

string-serial-netduino

Por ultimo nos quedaría añadir el resto de métodos de lectura que necesitásemos y comentar todo usando los comentarios de .Net ya que así nos aparecerá un cuadro con ayuda con la información de los métodos. El constructor por ejemplo quedaría así:

Y así es como quedarían los comentarios:

ayuda-netduino

Para terminar adjunto la librería que he creado y un ejemplo para sumar números enteros y obtener su resultado:

netduino-suma

Escriba aquí su comentario