image

Buenas

en el post de ayer comenté sobre un accesorio para detectar movimientos utilizando .Net Gadgeteer. Hoy veremos como con un par de líneas de código más, podemos activar la cámara para que en el momento que se detecta movimiento, saque una foto y la muestre en el display gráfico.

Para este ejemplo utilizaremos

Con el siguiente diagrama

image

Y luego en el código veremos que

  • - cuando se detecta movimiento se indica a la cámara que saque una foto (línea 21)
  • - cuando la cámara saca una foto, la misma se muestra en el display gráfico
   1: using System;
   2: using GT = Gadgeteer;
   3:  
   4: namespace GadgeteerApp15
   5: {
   6:     public partial class Program
   7:     {
   8:         void ProgramStarted()
   9:         {
  10:             motion_Sensor.Motion_Sensed += MotionSensorMotionSensed;
  11:             camera.PictureCaptured += CameraPictureCaptured;
  12:         }
  13:  
  14:         void CameraPictureCaptured(GT.Modules.GHIElectronics.Camera sender, GT.Picture picture)
  15:         {
  16:             display_T35.SimpleGraphics.DisplayImage(picture, 5, 5);
  17:         }
  18:  
  19:         void MotionSensorMotionSensed(GT.Modules.GHIElectronics.Motion_Sensor sender, GT.Modules.GHIElectronics.Motion_Sensor.Motion_SensorState state)
  20:         {
  21:             camera.TakePicture();
  22:         }
  23:     }
  24: }

En los próximos posts veremos como enviar esta información a un procesador de movimientos, e inclusive … pues como montarlo con un modelo cliente / servidor.

Saludos @ Home

El Bruno

image image image

image

Buenas

el ejemplo de hoy no intenta reemplazar a un Kinect, ni mucho menos. Sin embargo nos muestra que con un pequeño hardware de poco más de €12, podemos crear un sensor de movimientos que cuando detecte movimientos, comience a grabar el input de una cámara.

Sobre esta base comenzamos con el siguiente hardware para el ejemplo, donde veremos lo simple que puede ser crear un Motion Detector

con estos 3 elementos, conectamos los mismos guiados por el siguiente esquema

image

En este punto, con el sensor conectado vemos que el trabajo con el mismo es bastante simple.

La línea 10 nos muestra que tenemos un evento Motion_Sensed() que se activa cuando el sensor detecta movimiento.

   1: using Gadgeteer.Modules.GHIElectronics;
   2: using Microsoft.SPOT;
   3: namespace GadgeteerApp14
   4: {
   5:     public partial class Program
   6:     {
   7:         void ProgramStarted()
   8:         {
   9:             motion_Sensor.Motion_Sensed += MotionSensorMotionSensed;
  10:         }
  11:  
  12:         void MotionSensorMotionSensed(Motion_Sensor sender, Motion_Sensor.Motion_SensorState state)
  13:         {
  14:             Debug.Print("motion detected !");
  15:             // also check >> motion_Sensor.SensorStillActive
  16:         }
  17:     }
  18: }

Pues bien, podemos suscribirnos a este evento o podemos cambiar el enfoque y hacer un PULL del estado del sensor. Para este segundo caso debemos verificar el valor booleano de la propiedad SensorStillActive (línea 15).

El sensor es bastante pequeño y tiene un rango de unos 7 metros según las indicaciones oficiales que podemos leer aquí.

image

En el próximo post, le agregamos una cámara y guardamos el contenido de la misma en una tarjeta SD.

Saludos @ Home

El Bruno

image image image

image

Buenas,

después de un par de días en la playita con los amigos de Gusenet, vamos a meter las actualizaciones a cholón en el laptop.

Nota: No me olvido de agradecer a todos los que participaron y coordinaron el eventazo #YoNodeTuXaml. Hubo un montón de cracks y la verdad que pase un rato genial. Mañana escribiré un post al respecto (a ver si @jc_quijano me pasa alguna foto)

Hoy vamos a lo que vamos, desinstalo Visual Studio 2010 y paso a trabajar con .Net Gadgeteer solamente con Visual Studio 2012 (esa es la idea que comenté ayer).

Aquí dejo una crónica de los pasos que he seguido, incluidas las ostias y golpazos que me pegué en el camino para que funcione.

1. Desinstalar versiones anteriores. Aunque con cuidado, no desinstales el SDK (aunque no debería hacerte falta si no haces HW, hazme caso)

image


2. Descargar y ejecutar .NET Gadgeteer Core 2.42.700 desde https://gadgeteer.codeplex.com/releases/view/105366

image

3. 2 minutos después ya está todo OK

image

4. Ahora si, abro Visual Studio 2012 y puedo ver los nuevos tipos de proyecto para Gadgeteer

image

5. Vamos con un new project del tipo NETMF 4.2 y … ostion

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    The project file 'C:\Users\<user>\AppData\Local\Temp\xnrmsqxj.xek\Temp\GadgeteerApp8.csproj' cannot be opened.

    There is a missing project subtype.
    Subtype: '{b69e3092-b931-443c-abe7-7e7b65f2a37f}' is unsupported by this installation.
    ---------------------------
    OK   Help  
    ---------------------------

6. En el canto de los dientes, que dolor! y no entiendo muy bien porqué. Bueno en realidad si, ha pasado lo siguiente:

Un prerequisito para esta versión de .Net Gadgeteer para Visual Studio 2012 es .Net Micro Framework 4.3. Yo no tengo pensado actualizar mi hardware con lo que pensé que con NETMF 4.2 me alcanzaba, pero no. Me toca descargar NETMF 4.3 SDK desde http://netmf.codeplex.com/downloads/get/500745 y lanzar el instalador.

image

7. Dentro del mismo veo que tiene todas las versiones “anteriores” de NETMF

image

8. Asi que para adelante!

image

9. Y ahora si ya puedo crear nuevo proyecto

10. Escrivir un Hola Mundo!

11. Y … Funciona :D

En el caso de .Net Gadgeteer es algo así como poner lo siguientes elementos

Con el siguiente diagrama

image

y el siguiente código par encender y apagar el led del button cuando se presiona el mismo

   1: using Gadgeteer.Modules.GHIElectronics;
   2:  
   3: namespace GadgeteerApp12
   4: {
   5:     public partial class Program
   6:     {
   7:         void ProgramStarted()
   8:         {
   9:             button.ButtonPressed += ButtonButtonPressed;
  10:         }
  11:  
  12:         void ButtonButtonPressed(Button sender, Button.ButtonState state)
  13:         {
  14:             button.ToggleLED();
  15:         }
  16:     }
  17: }

Saludos @ Home

El Bruno

image image image

image

Buenas,

hoy toca cambiar de tema, en algo casi impensado para mi blog. Sin embargo después de ver el siguiente video podrás ver como tecnologías que parecen que son más para jugar que otra cosa, pueden servir a un propósito específico.

http://youtu.be/N0h1mgpn95s

Dicho esto, no voy a entrar en los aspectos tecnológicos que son simples pero con una efectividad brutal. Voy a felicitar al equipo de Grey Spain por una idea tan buena.

Saludos @ Home

El Bruno

image image image

Publicado 29/4/2013 17:16 por El Bruno | con no comments
Archivado en:

image

Buenas

notición para cerrar el fin de semana desde el hotel del juguete en IBI:

Por fin .Net Gadgeteer está soportado en Visual Studio 2012.

Hasta ahora, el DSL para el diseño y programación de aplicaciones con .Net Gadgeteer solo se podía hacer con Visual Studio 2010. Ahora con el release 2.42.700 ya tenemos soporte para Visual Studio 2012. Eso sí, hay que utilizar .Net Micro Framework 4.3, lo que significa que tengo que actualizar mi micro de pruebas. Espero no quedarme con un ladrillo, en cuanto lo haga, pues un post sobre como se hace (:

Por cierto, ya conté alguna vez que todo .Net Gadgeteer es Open Source?

Download: https://gadgeteer.codeplex.com/releases/view/105366

Saludos @ IBI

El Bruno

image image image

image

Buenas,

después de que el gran Jose Miguel Torres nos muestre lo impresionante de Xamarin Studio, aprovecho para publicar los materiales que utilicé en la charla con los amigos de Gusenet.

La presentación es la siguiente

y el código fuente se puede descargar desde http://sdrv.ms/ZDCgna

Saludos @ Santa Pola

El Bruno

image image image

image

Buenas

Después de 2 días en Paris donde pude escribir poco y aprender mucho; hoy vamos con un ejemplo de código puro y duro

Cómo pintar pixel a pixel un chart en un display con .Net Gadgeteer.

En este ejemplo utilizaremos los siguientes elementos

Organizados con el siguiente esquema:

image

Del código de la aplicación debo resaltar

  • linea 19, en el press del Button además de detener e iniciar el timer, enciendo y apago el LED del boton
  • línea 32, la rutina que dibuja el chart es de lo más simple, incrementa un contador entre 20  40 y luego lo decrementa. También hay un segundo flag para controlar el avance vertical

   1: using GT = Gadgeteer;
   2:  
   3: namespace GadgeteerApp6
   4: {
   5:     public partial class Program
   6:     {
   7:         private uint _axisX = 20;
   8:         private uint _axisY = 20;
   9:         private GT.Timer _timer;
  10:         private bool _modeUp = true;
  11:  
  12:         void ProgramStarted()
  13:         {
  14:             button.ButtonPressed += ButtonButtonPressed;
  15:             _timer = new GT.Timer(200);
  16:             _timer.Tick += TimerTick;
  17:         }
  18:  
  19:         void ButtonButtonPressed(GT.Modules.GHIElectronics.Button sender, GT.Modules.GHIElectronics.Button.ButtonState state)
  20:         {
  21:             button.ToggleLED();
  22:             if (_timer.IsRunning)
  23:             {
  24:                 _timer.Stop();
  25:             }
  26:             else
  27:             {
  28:                 _timer.Start();
  29:             }
  30:         }
  31:  
  32:         void TimerTick(GT.Timer timer)
  33:         {
  34:             _axisY++;
  35:             if (_axisY + 10 > display_T35.SimpleGraphics.Height)
  36:             {
  37:                 display_T35.SimpleGraphics.Clear();
  38:                 _axisY = 20;
  39:             }
  40:             if (_modeUp && _axisX > 40)
  41:             {
  42:                 _modeUp = false;
  43:             }
  44:             if (!_modeUp && _axisX < 20)
  45:             {
  46:                 _modeUp = true;
  47:             }
  48:             if (_modeUp)
  49:             {
  50:                 _axisX++;
  51:             }
  52:             else
  53:             {
  54:                 _axisX--;
  55:             }
  56:             display_T35.SimpleGraphics.SetPixel(GT.Color.Green, _axisX, _axisY);
  57:             for (uint i = 1; i < 15; i++)
  58:             {
  59:                 display_T35.SimpleGraphics.SetPixel(GT.Color.Red, _axisX + i, _axisY);
  60:             }
  61:         }
  62:     }
  63: }

Para muestra nada mejor que un video

Y ya mañana para Santa Pola a mostrar estas cositas en vivo con los amigos de GuseNet.

Saludos @ Home

El Bruno

image image image

image

Buenas,

siempre me pasa cada vez que salgo a eventos cuyo foco no es la tecnología, me doy cuenta de que cuando mucha distancia entre los equipos de IT y las personas de negocio, pues el trabajo es probable que no sirva para nada.

Hoy tuve la suerte de ver en vivo a una persona … ok no puedo decir el nombre, pero creo que puedo dar pistas. Los que conozcan los viajes espaciales conocerán la empresa donde trabaja esta persona, que es una de las pocas empresas comerciales que se dedican a enviar cosas al espacio. Y así como te ponen en órbita de modo comercial, también se ponen las pilas y ganan un par de campeonatos de F1, claro no?

Pues eso, en un determinado momento, se planteó el debate sobre si departamento de tecnología interno o externo, y el ejemplo fue buenísimo. Básicamente se trata de recordar de porqué todos los websites de fines de los 90s y principios del 2000 eran más feos que el parto de Mick Jagger. Muy simple, los dirigian los departamentos de IT. Teníamos websites muy prácticos con listas interminables, procesos super complejos para dar de alta un par de datos y repito, más feo que pisar mierda descalzo. Luego comenzó a meterse en el tema los expertos de negocio y claro .. la cosa fue a mejor.

Nota: cuidado que hoy un sitio web feo, está de moda. Se puede llegar a pensar en que el mismo es así como una técnica de marketing para que asociemos al mismo con una persona. Recomiendo darle un vistazo a este link.

Prosigo, el foco a tener en cuenta es que lo techies son (somos?) muy importantes, tal vez esenciales. Pero un techie sin dirección es como un barco sin timón, puede terminar en cualquier parte. Para ejemplo el caso de Facebook. El Mark Z es un techie, sin embargo es una persona que vive las 25 horas del día pensando en una sola cosa ¿como mejorar Facebook?. Los que lo conocen (yo no he tenido la suerte), dicen que por ser el padre de la red social más grande del mundo, es la persona mas aSocial que existe. Esto es normal, él no es un ejemplo de lo crea, es solo la mano que guía los rumbos de FB.

Ahora bien, ¿y porqué este post? (además de tener tiempo en el Charles de Gaulle) solo para recordar que si eres un techie, en muchas ocasiones es casi más importante trabajar al lado de la persona de negocio que intentar colar con calzador lo último de lo último en tecnología. 5 de las 10 empresas más exitosas a nivel comercial, son de última en el soporte tecnológico sobre el que se apoyan. Eso sí, cumplen su objetivo de manera magistral Risa

Recursos: http://forums.site-reference.com/topic/1897/The-Surprising-Truth-About-Ugly-Websites/

Saludos @ Home

El Bruno

image image image

Publicado 24/4/2013 18:03 por El Bruno | con no comments
Archivado en:

image

Buenas,

imagehoy me toca escribir algo un poco complicado. El título del post ya te lo dice todo, y si sigues leyendo, seguramente te pica la curiosidad sobre el CÓMO se hace algo que no tiene mucho sentido. Así que bien, en este post no verás nada de código, inclusive ningún ejemplo real, este POST NO SIRVE.

Y si la pregunta que te haces ahora es ¿PORQUÉ? La respuesta es muy fácil,

NO SIEMPRE HAY USAR LOS EJEMPLOS QUE SE LEE EN INTERNET

Si a algún iluminado se le dio por descompilar el core transversal de la Ribbon de Office 2013, y cruzando un jabalí con un lagarto, pudo incrustar esa Ribbon en una aplicación C#, eso no significa que TU DEBAS HACERLO!

Así que bien, este post es un llamado a la solidaridad con 2 puntos a tener en cuenta

  • Estoy pensando seriamente en dejar de poner el código fuente de mis ejemplos en “modo texto”, a partir de ahora deberían ser PNGs. Como bien sabrás, yo no soy ejemplo de nadie, sin embargo he visto como mucha gente hace Copy&Paste y luego pregunta. Lo de pensar ya no está de moda
  • Por favor, piensa y analiza lo que encuentras en internet. Una solución muy molona para un escenario, tal vez a la larga sea un infierno para TU ESCENARIO. Esto no solo aplica a cosas con APIs nativas de Windows (donde ahora sufrirás el tormento eterno de ver como lo haces para WinRT!), sino con modelos de entidades de negocio, con patrones, etc.

Así que bien, antes de irme a París y acordarme de todos los parientes de más de uno … dejo un post que no aporta nada (pero me sirve de consuelo que nadie hará un COPY&PASTE del mismo !)

Image: http://ffffound.com/image/50c1b282a9c00f2d3ec68f8d5af641c75249796f

Saludos @ Home

El Bruno

image image image
Publicado 22/4/2013 22:09 por El Bruno | 2 comment(s)
Archivado en: ,

image

Buenas

el ejemplo de hoy es un poco más complicado que un Hello World, pero te da mas alegrías. Se trata de utilizar un botón y un LED multicolor para cambiar el color del mismo con un timer.

En este ejemplo utilizaremos

con el siguiente diagrama

image

Y de nuevo, con menos de 50 líneas de código fuente podremos implementar nuestra aplicación.

   1: using Gadgeteer.Modules.GHIElectronics;
   2: using GT = Gadgeteer;
   3:  
   4: namespace GadgeteerApp5
   5: {
   6:     public partial class Program
   7:     {
   8:         private GT.Timer _timer;
   9:  
  10:         void ProgramStarted()
  11:         {
  12:             button.ButtonPressed += ButtonButtonPressed;
  13:             _timer = new GT.Timer(1000);
  14:             _timer.Tick += TimerTick;
  15:         }
  16:  
  17:         void ButtonButtonPressed(Button sender, Button.ButtonState state)
  18:         {
  19:             if (!_timer.IsRunning)
  20:             {
  21:                 _timer.Start();
  22:             }
  23:             else
  24:             {
  25:                 _timer.Stop();
  26:                 multicolorLed.TurnOff();
  27:             }
  28:         }
  29:  
  30:         private void TimerTick(GT.Timer timer)
  31:         {
  32:             var color = multicolorLed.GetCurrentColor();
  33:  
  34:             if (color == GT.Color.Blue)
  35:             {
  36:                 color = GT.Color.Green;
  37:             }
  38:             else if (color == GT.Color.Green)
  39:             {
  40:                 color = GT.Color.Red;
  41:             }
  42:             else
  43:             {
  44:                 color = GT.Color.Blue;
  45:             }
  46:  
  47:             multicolorLed.TurnColor(color);
  48:         }
  49:     }
  50: }
Datos interesantes de la aplicación
  • Línea 13, implementación especial de timer para .Net Gadgeteer. Ni intentes utilizar el timer de .Net, morirás entre terribles sufrimientos
  • Línea 19, en la implementación del button, se inicia el Timer y se apaga el LED cuando se detiene el timer
  • Línea 29, demuestra lo simple que es utilizar el LED, un GetCurrentColor() para obtener el color actual y luego un TurnColor() para definir el color del LED

El video a continuación

 

Saludos @ La Finca

El Bruno

image image image

image

Buenas

cuando te toca un día como hoy con un viaje relámpago a MADRID-BARCELONA-MADRID, poco tiempo te queda para ponerte al día de las novedades. Sin embargo, hace 2 días me entró un correo del gran Pep LLuis, donde me decía que

SI QUERES COMPRAR COMPONENTES DE ROBOTICA, COMO POR EJEMPLO ALGO DE .NET GADGETEER AQUI EN ESPAÑA, SAVECOMM.NET ES DISTRIBUIDOR OFICIAL .

Así que ya sabes, si te pica la cuiridad por el fabuloso mundo de .Net Microframework, date una vuelta por y seguro que encontrarás lo que necesitas!

HomePage: http://savecomm.net 

Saludos @ Home

El Bruno

image image image

image

Buenas,

el crack del Brian Keller nos confirma que las virtual machines con Visual Studio 2012 y Team Foundation 2012 ya están actualizadas con el Update 2. El update 2 incluye muchas cosas, así que lo mejor es actualizar los entornos de demo a esta versión. Los detalles de la descarga aquí : http://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx

Fuente: http://blogs.msdn.com/b/briankel/archive/2013/04/17/visual-studio-2012-update-2-alm-virtual-machine-and-hands-on-labs-demo-scripts-now-available.aspx

Saludos @ La Finca

El Bruno

image image image

 

image

Buenas

después del éxito rotundo del post de ayer sobre cómo crear una cámara con GT, hoy dejo un par de líneas para trabajar con el adaptador Wifi.

Para este ejemplo he utilizado los siguientes elementos

Y conectado de la siguiente forma

image

Luego el siguiente código muestra lo siguiente:

  • Línea 12, listado de todas las redes WIFI que capta el sensor
  • Línea 19, cómo conectar con una red WIFI abierta
  • Línea 27, cómo conectar con una red WIFI segura con WAP
  • Línea 36, mostrar la información de la red actual conectada
   1: using GHI.Premium.Net;
   2: using Microsoft.SPOT;
   3:  
   4: namespace GadgeteerApp4
   5: {
   6:     public partial class Program
   7:     {
   8:         void ProgramStarted()
   9:         {
  10:             wifi_RS21.Interface.NetworkAddressChanged += InterfaceNetworkAddressChanged;
  11:  
  12:             // Lista de todas las wifis disponibles
  13:             var wifis = wifi_RS21.Interface.Scan();
  14:             foreach (var wiFiNetworkInfo in wifis)
  15:             {
  16:                 Debug.Print("Wifi - SSID:" + wiFiNetworkInfo.SSID + "- Sec Mode:" + wiFiNetworkInfo.SecMode);
  17:             }
  18:  
  19:             // connect to OPEN wifi network
  20:             var hostingNetwork = new WiFiNetworkInfo
  21:             {
  22:                 SSID = "SSID_WifiOpen",
  23:                 SecMode = SecurityMode.Open
  24:             };
  25:             wifi_RS21.Interface.Join(hostingNetwork, "");
  26:  
  27:             // connect to WPA wifi network
  28:             hostingNetwork = new WiFiNetworkInfo
  29:             {
  30:                 SSID = "SSID_WifiWap",
  31:                 SecMode = SecurityMode.WPA
  32:             };
  33:             wifi_RS21.Interface.Join(hostingNetwork, "Password goes here");
  34:         }
  35:  
  36:         void InterfaceNetworkAddressChanged(object sender, EventArgs e)
  37:         {
  38:             var message = "IPAddress: " + wifi_RS21.Interface.NetworkInterface.IPAddress;
  39:             Debug.Print("Current network information\r\n" + message);
  40:         }
  41:     }
  42: }

En los próximos posts, tocará mostrar como subir información de los sensores a WebSites de AZURE.

Saludos @ La Finca

El Bruno

image image image

image

Buenas.

Hoy un post de esos buenos , buenos, buenos: Cómo crear una cámara de fotos utilizando .Net Gadgeteer con 22 líneas de código. En este ejemplo utilizaremos los siguientes componentes:

Conectados como muestra la imagen:

image

Ahora bien, para lo que sigue del post les recomiendo estar sentados o tomarse un par de whiskitos antes … este es el código fuente de la aplicación.

   1: namespace GTPhotoCamera
   2: {
   3:     public partial class Program
   4:     {
   5:         void ProgramStarted()
   6:         {
   7:             button.ButtonPressed += ButtonButtonPressed;
   8:             camera.PictureCaptured += CameraPictureCaptured;
   9:         }
  10:  
  11:         void CameraPictureCaptured(Gadgeteer.Modules.GHIElectronics.Camera sender, Gadgeteer.Picture picture)
  12:         {
  13:             display_T35.SimpleGraphics.DisplayImage(picture, 5, 5);
  14:         }
  15:  
  16:         void ButtonButtonPressed(Gadgeteer.Modules.GHIElectronics.Button sender, Gadgeteer.Modules.GHIElectronics.Button.ButtonState state)
  17:         {
  18:             camera.TakePicture();
  19:         }
  20:     }
  21: }

Simplemente impresionante! una función para solicitar una foto de la cámara, y una función para procesar la misma … la simplicidad ante todo ;)

Saludos @ La Finca

El Bruno

image image image

image

Buenas

hace 2 días los amigos del Master RIAtec me invitaron a dar una sesión sobre Kinect y algo más. Como tenía bastante tiempo con ellos, aproveché y sin que se diesen cuenta, les metí de incógnito en la sesión: USB Hacking, Microsoft Robotics, .Net Micro Framework y otras cosillas más. Después de regalar unos chocolates, cuando vieron que abrí la maleta y comencé a sacar juguetes, … pues bueno los ojos se les abrían como platos.

Estas son parte de las presentaciones que usé.

Por cierto, me estrené con .Net Gadgeteer y la verdad es que fue muy bien. Cada vez le veo más posibilidades :)

Saludos @ Home

El Bruno

image image image

image

Buenas

después de presentar ayer .Net Micro Framework, hoy veremos más en detalle .Net Gadgeteer

.Net Gadgeteer (a partir de ahora GT) es una plataforma Open Source basada en .NET Micro Framework (NETMF). Si te suena Arduino, seguramente también te sonará Netduino que es la misma idea pero basada en NETMF. El punto donde GT se diferencia es que los fabricantes de hardware crean piezas que se montan en un modo plug-and-play con un motherboard. Esto hace que no solo sea divertido el crear gadgets, sino que además es bastante simple ya que no hay que preocuparse por la conexión de los periféricos. El corazón de GT es un módulo EMX que tiene un poco de todo: RAM, un procesador ARM, ethernet, etc. Lo bueno es que está modificado para poder olvidarse de las conexiones. La siguiente imagen muestra un motherboard donde no han dejado espacio para ningún sensor. (Y sí, eso grande que vez debajo es un display táctil que “hostea” apps WPF … o casi)

Nota: Aquí hay más de 100 sensores y motherboards diferentes para ver lo que puedes crear con GT http://www.netmf.com/gadgeteer/showcase.aspx?showcaseid=1

Software

Si te entró la curiosidad, lo único que tienes que saber es que para poder comenzar necesitas los siguientes prerequisitos de software:

  1. Microsoft Visual C# Express 2010

    You can still use professional or ultimate.

  2. Microsoft .NET Micro Framework 4.2 QFE2 SDK

    This SDK must be installed before step three.

  3. GHI Software Package v4.2 Feb. 18, 2013

    Includes NETMF and .NET Gadgeteer SDKs and components. See release notes and known issues.

Nota: Estos son los de la página oficial, cada 2 meses es mejor ver los mismos directamente en http://www.ghielectronics.com/support/.net-micro-framework

Lo siguiente es darse un repaso por el siguiente eBook gratis:

Beginners Guide to  C#  and the .NET Micro Framework
http://www.ghielectronics.com/downloads/FEZ/Beginners%20guide%20to%20NETMF.pdf

Son 60 páginas que realmente te ayudan a comenzar con GT.

Y ya estás listo para escribir tu primera aplicación. En este caso y para los siguientes ejemplos utilizaremos los sensores que vienen con el Kit “FEZ Spider Starter Kit”:

Creando la primera aplicación

Tenemos el hardware, tenemos el software, ahora toca crear el primer hola mundo ;).

1. Abrimos Visual Studio 2010. (en otro post comento porqué VS2010 y no VS2012)

2. Creamos un nuevo proyecto del tipo Visual C# // Gadgeteer // .Net Gadgeteer Appication (NETMF 4.2)

image

3. En VS2012 veremos un DSL con una placa FEZ Spider, un pequeño tip y en la barra de herramientas todos los sensores disponibles para utilizar.

image

4. Agregamos un elemento de tipo Button.

5. Luego desde el único conector del Button, conectamos el mismo con el motherboard. Un punto importante es que en el diseñador se nos ofrecerán los slots correctos para la conexión.

image

6. Una vez conectado tendremos algo similar a …

image

7. Ahora vamos a agregar un PowerPoint (o punto de poder) jua!. Lo conectamos automáticamente y tendremos lo siguiente:

image

8. Ya podemos comenzar a escribir código. Si limpiamos de comentarios y basura el código limpio de este ejemplo es el siguiente:

   1: using Microsoft.SPOT;
   2:  
   3: namespace GadgeteerApp2
   4: {
   5:     public partial class Program
   6:     {
   7:         void ProgramStarted()
   8:         {
   9:             Debug.Print("Program Started");
  10:         }
  11:     }
  12: }

9. Como en una app C# de las de siempre, tenemos intellisense, inline help, etc. Vamos inclusive un button se comporta como un button ;)

image

10. Y luego ya podemos agregar el “Hello Valentino”

   1: using Gadgeteer.Modules.GHIElectronics;
   2: using Microsoft.SPOT;
   3:  
   4: namespace GadgeteerApp2
   5: {
   6:     public partial class Program
   7:     {
   8:         void ProgramStarted()
   9:         {
  10:             button.ButtonPressed += ButtonButtonPressed;
  11:             Debug.Print("Program Started");
  12:         }
  13:  
  14:         void ButtonButtonPressed(Button sender, Button.ButtonState state)
  15:         {
  16:             Debug.Print("Hello Valentino !!!");
  17:         }
  18:     }
  19: }

11. Impresionante de simple. Ahora me toca armar el juguetito para probarlo “en vivo”

image

Nota: eso de detrás es un mando de Xbox (sin modelo que me crujen) y también un mate, es lo que tenemos los argentinos en exterior

12. Funciona de una, en cada clic del botón, tenemos el mensaje en el Output window.

image

Saludos @ Home

El Bruno

image image image

image

Buenas,

ya que en los próximos días me pasearé por España con varios gadgets nuevos (además del Kinect, Lego, etc) aprovecho el momento para aclarar algunos conceptos importantes. Y el primero es de cajón:

¿Qué es .Net Micro Framework?

.Net Micro Framework (NETMF) es una plataforma .NET Open Source que han adaptado en Microsoft para trabajar con Small Devices (si escribo dispositivos pequeños me duelen los ojos!). NETMF está basado en .NET Framework, esto significa Visual Studio 2010 o Visual Studio 2012, C# o Visual Basic .Net, etc. Además, poder ejecutar código .NET en dispositivos con 64K de RAM es algo que a mi, me pone contento como un perro con 2 colas. El site oficial tiene un About mucho más completo aquí,

En resumen, con NETMF podemos desarrollar en C# para small devices. Ahora bien, para que esto sea posible algunos proveedores de hardware se han encargado de portar NETMF en estos small devices. Aquí entra en juego la 2da parte del post

.Net Gadgeteer

.NET Gadgeteer es una creación de la gente de GHI electronics que posee varios componentes de hardware para trabajar con NETMF y además un plugin específico para Visual Studio 2010. El modelo de hardware que han creado consiste en una mainboard a la que se le pueden acoplar diferentes sensores y luego trabajar con los mismos. Sensores hay de todo tipo: cámaras, sensores de temperatura, de humedad; además hay controladores de servomotores, pantallas táctiles, botones, etc. Todos controlados con un DSL muy simpático en VS2010.

La siguiente imagen muestra el DSL para conectar los componentes que tenemos disponibles en la barra de herramientas.

image

A partir de aquí todo es imaginación y con toda la potencia de C# en nuestros dedos.

Para cerrar un video donde se explica rápidamente .Net Gadgeteer, y en los próximos días un par de ejemplos más interesantes que estoy creando con esta plataforma.

 

Por cierto, ¿alguno se imagina que el control de un sistema de AirBags esté programado con .Net Framework?

HomePage: http://www.netmf.com/

 

Saludos @ Home

El Bruno

image image image

ALM 03

Buenas,

ayer comenté que había publicado el volumen 1 de 50 páginas sobre ALM con Visual Studio 2012 y Team Foundation Service en Amazon.com por €0.89.

Lo que sucedió es que mucha gente asocia a Amazon.com con lectores Kindle (los físicos) y claro, parece que para leer el libro de ALM hay que tener un eReader … esto no es tan así !!!

image

Además de los eReaders, Kindle como plataforma tiene aplicaciones de lectura de eBooks para varias plataformas como Windows 8, Windows Phone 8, iPad, Ifon, etc. Y la forma en la que lo han implementado es genial.

La mejor forma de explicarlo es mostrar un ejemplo para instalar Kindle en Windows 8 y Windows Phone 8, y aprovechar y leer mi libro en estos dispositivos.

Lo primero es buscar la app de Kindle en el Store de Windows 8. La aplicación es gratis y se instala en segundos.

image

 

Una vez que la instalas, debes identificarte con tu cuenta de Amazon. Esta cuenta es la que te permite sincronizar tus contenidos en la nube de Amazon.

image

Una vez dentro de Amazon puedes ver todos los libros que te has comprado o inclusive los que tengas en “local” para utilizar el Kindle como lector.

image

Una de las cosas buenas que tiene Amazon, como plataforma es que una vez que compras un libro, luego lo puedes ver en todos tus dispositivos.

En el caso de la aplicación para Windows 8, como en el caso del Kindle físico, también puedes añadir marcas, comentar, traducir, etc.

image

El mismo modelo puedes seguir con la aplicación para Windows Phone 8. La buscas en la Store, la instalas, te identificas y cuando entras a la misma ves tu colección personal de libros.

image

Una funcionalidad que me encanta es que si accedes al libro desde el móvil, verás que automáticamente te lleva a la posición desde donde dejaste de leer en la app para Windows 8.

image

 

Yo con este modelo, he leído partes de libros en el metro y luego sigo con los mismos con el Kindle Touch al lado de la cama por las noches, ya que también se sincroniza por Wifi.

Estas funcionalidades “multi plataforma” es uno de los motivos que me llevó a utilizar Amazon.com como plataforma para la publicación del libro. Tienen un modelo de publicación muy simple y que funciona de forma genial.

 

Compra el libro: http://amzn.to/Z2t78P

 

Saludos @ La Finca

El Bruno

image image image

ALM 03

Buenas,

si estas buscando un libro que te explique cómo puedes trabajar con Visual Studio 2012 y Team Foundation Service, lo puedes comprar aquí: http://amzn.to/Z2t78P. Por menos de 1 €uro ;)

Hace un tiempo que estaba con ganas de escribir un libro y se me dio por hacerlo de una forma un poco ágil, les dejo una parte de la introducción:

Otra cosa a comentar es que voy a dividir el libro en volúmenes de aproximadamente 50 páginas. Cada 50 páginas, voy a publicar el libro en Amazon.com. Esto lo haré para que puedas ir leyendo el libro por partes y para tener un Feedback más constante sobre lo que voy escribiendo.

A ver si te esto te resulta conocido: En lugar de escribir 400 páginas y que alguien me diga que después de la página 20 no pudo seguir leyendo, voy entregando volúmenes de 50 páginas y voy ajustando el contenido sobre la marcha a partir del feedback de las personas que lean el libro. AGILE RULES!

Este es el primer post que hago para promocionar el libro, y la verdad que este modelo ya me ha dado resultados. Algunos de los colaboradores / compradores ya me han hecho sugerencias muy buenas: agregar viñetas, secciones de detalle más técnicas, etc. He creado un espacio en UserVoice para las sugerencias y recomendaciones, sin embargo ha sido con un café y charla de por medio que recibido el mejor feedback. En estos días completaré el volumen 2 y espero poder poner las mismas dentro.

 

Materiales

PD: la plataforma de publicación ha sido Amazon, el próximo post explicaré el porqué ;)

 

Saludos @ Home

El Bruno

image image image

image

Buenas,

Si como yo estas acostumbrado a trabajar con el command line de Git, (yo no lo conozco a fondo pero si que me conozco algunos de los comandos más básicos), seguramente te preguntarás que opciones son las que se incluyen en el Visual Studio 2012 Update 2 para trabajar con Git. Vamos que para no tener que hacer un Alt+Tab al command prompt cada dos por tres.

Pues bien la página que se han currado los del equipo de producto lo deja bastante claro:

Task Visual Studio Command Prompt

Create a local repository

Yes git-init

Copy a remote repository to your dev machine

Yes git-clone

Fetch and pull changes from a remote repository

Yes (some conflicts can be resolved only at command prompt) git-fetch, git-pull

Get information about a repository

You can if it is in a TFS team project (shown in bold text and with hover info in Team Explorer) git-remote

Commit your changes

Yes git-commit

Amend your last commit. Some typical cases:

No git-commit

Undo a committed change by applying the inverse of the commit. See rolling back changes with revert.

No git-revert

Undo committed changes by returning your local repo to a prior commit and de-referencing the later commit.  See Undoing Things, which warns, "...this is a dangerous command: any changes you made to that file are gone — you just copied another file over it. Don’t ever use this command unless you absolutely know that you don’t want the file."

No git-reset

Branch and merge

Yes (some conflicts can be resolved only at command prompt). (We plan to post more info on branches. For now, see our announcement post.) git-branch, git-merge

Re-order history or combine commits. See Git Branching - Rebasing.

No git-rebase

Push changes to a remote repository

Yes git-push

Para que esto funcione necesitas

Fuente: http://blogs.msdn.com/b/visualstudioalm/archive/2013/03/08/use-the-git-command-prompt-to-supplement-visual-studio.aspx

Saludos @ Home

El Bruno

image image image

Publicado 7/4/2013 22:24 por El Bruno | con no comments
Archivado en: ,
Más artículos < Página anterior - Página siguiente >