Usando el sensor de latidos en Microsoft Band


Microsoft Band nos ofrece diversos sensores con el cual podemos acceder mediante el SDK que nos ofrece Microsoft.

Esta aplicación es bastante sencilla y dejo todo el código en C# comentado (por lo menos lo más relevante) y dejo el proyecto publicado en Github. Continue reading “Usando el sensor de latidos en Microsoft Band”

Event Hubs orientado a IoT


Para tener un centro de eventos listo para usar en nuestro sistema de IoT (hacer click aquí) es necesario seguir la siguiente guía.

Crear Event Hub

Continue reading “Event Hubs orientado a IoT”

Mini sistema orientado a IoT


El pasado lunes 6 de abril se llevó a cabo IoT Expert Day, el cual durante el día se llevaron a cabo charlas introductorias al Internet de las Cosas y se mostraron ejemplos de cada tema; luego, después del medio día se llevó a cabo un taller para crear un sistema orientado a IoT para que todos los participantes pudieran tener un primer acercamiento.

Este taller que ahora dejo en disposición de manera online consta de los siguientes elementos:

  • Programa escrito en Arduino para encender un led
  • Aplicación hecha con Node.js y Socket.io, para servir de interface de conexión
  • Aplicación en Python para recibir todos los comandos por medio de Internet
  • Web App para controlar el led
  • Event Hub para registrar todos los eventos
  • Programa en C# para demostrar el funcionamiento de los Event Hub
  • Finalmente dejaré una aplicación móvil para que sea más realista el ejemplo

diagrama del sistema Continue reading “Mini sistema orientado a IoT”

Ejecutar Socket.io en Xamarin.Android


Es muy frecuente querer ejecutar esta grandiosa tecnología en la mayoría de recursos que usamos, por lo que esta vez les enseñaré a implementar Socket.io sin necesidad de usar terceros y sacarse las canas entre versiones y dependencias en servidor, etc etc… como me pasó a mi.

La ejecución es muy sencilla, tenemos un WebView donde se ejecuta código en Razor, HTML y un poco de JS donde se hará un hilo de comunicación de doble vía entre el WebView y el Code-Behind, a esta técnica la llamé BlackOps, ya que aquí se harán todas estas tareas oscuras y transparentes al usuario final, la cual darán una sensación de que corre de manera nativa.

  • En Xamarin Studio crear un nuevo proyecto tipo “Android WebView Application”, en este caso lo llamaré “EtonMessy_And”. 
  • En la carpeta Assets crear otra carpeta llamada “js” y crear un archivo llamado “blackOpsHelper”, descargar el cliente de Socket.io desde https://cdn.socket.io/socket.io-1.0.4.js y JQuery desde http://code.jquery.com/jquery-1.11.0.min.js 
  • En el archivo RazorView.cshtml agregar las referencias necesarias a los script.
  • Como buena práctica es encapsular toda la lógica en un archivo *.js que podría llamarse BlackOpsHelper.js, sin embargo, por razones del diseño del control WebView en Xamarin no es posible ejecutar llamados a Internet (probablemente se corrija más adelante), por el momento..  añadir el código base que he diseñado en una etiqueta “script”.

Continue reading “Ejecutar Socket.io en Xamarin.Android”

Windows Phone 8.1: WebView – DefaultBackgroundColor & DOMContentLoaded


En Windows Phone 8.1 Microsoft nos proporciona otro método y dos eventos sumamente importantes para dominar a nuestro antojo el control WebView el cual he dedicado un tiempo para mostrar el potencial de este.

DefaultBackgroundColor

Para comenzar ahora podemos cambiar el color que trae el control por defecto si y solo si, la página no define un background porque ahí si no podemos modificarlo. Esto nos puede servir para modificar una aplicación Web a la identidad de la aplicación, con esto y con las técnicas anteriores podemos tener este WebApp totalmente modificable y parametrizable desde la aplicación de Windows, esto es simplemente magnífico!.

Yendo al grano, DefaulBackgroundColor es una propiedad que se puede leer y escribir (Get, Set) donde pide por parámetro a modificación un objeto tipo Windows.UI.Color y así mismo se puede obtener este tipo de dato.

El uso de esta propiedad es la siguiente:

// Get
Windows.UI.Color myColor = myWebView.DefaultBackgroundColor;

// Set
myWebView.DefaultBackgroundColor = Color.FromArgb(255, 0, 0, 0);

Continue reading “Windows Phone 8.1: WebView – DefaultBackgroundColor & DOMContentLoaded”

Windows Phone 8.1: WebView – ScriptNotify & InvokeScriptAsync


En WinRT el control WebView proporciona dos métodos el cual hace que le suba el poder casi hasta que las páginas Web podrían interactuar directamente con la aplicación, proporcionando así una visión totalmente distinta de que este control podría comportarse como una especie de IFRAME o un sandbox dentro de nuestra aplicación.

Este detalle es maravilloso pero así mismo puede ser un gran dolor de cabeza ya que podría ser una puerta trasera (backdoor) de nuestra aplicación y así podríamos afectar completamente la seguridad ya que estamos dejando un portal abierto hacia la Web.

“Puesto que este evento se activa mediante código externo, debe tener cuidado sobre lo que se coloca en el controlador de eventos. Para evitar que los scripts malintencionados aprovechen este evento, asegúrese de habilitarlo solo para los URI de confianza” – MSDN

Teniendo en cuenta estas recomendaciones y tomando las medidas de seguridad necesarias procederemos a implementar estos poderosos métodos.

InvokeScriptAsync

Este método como su nombre lo indica es capaz de ejecutar un script declarado en el fuente destino, por lo general sería una función de JavaScript; adicional puede retornar un mensaje tipo string de modo callback.

En C#

await myWebView.InvokeScriptAsync("scriptName", new string[] { "Parameter1", "Parameter2" });

En JS

function scriptName(Param1, Param2) {
    // ..
}

Continue reading “Windows Phone 8.1: WebView – ScriptNotify & InvokeScriptAsync”

Windows Phone 8.1: WebView


El control WebView hospeda contenido Web en la aplicación el cual está en el ensamblado Windows.UI.Xaml.Controls.WebView definido en las librerías compartidas entre Windows y Windows Phone; mediante este control es posible renderizar código HTML y poderlo visualizar, por lo tanto podemos embeber una página Web en nuestra aplicación la cual nos puede traer grandes beneficios a la hora de desarrollar aplicaciones multiplataforma, sin embargo si se usa sin control o de manera desmedida puede convertirse en un dolor de cabeza ya que se puede volver un vector de ataque a nuestra aplicación.

He ahí el motivo de dedicarle una serie de artículos a este aparente sencillo control del cual podremos aprovechar para sacarle su máximo potencial.

Comenzando, dedicaré este artículo a explicar los ámbitos sencillos.

Primeros pasos

Para implementar un control tipo WebView nuestro proyecto de Windows Phone 8.1 debe tener referenciado el ensamblado Windows.UI.Xaml.Controls.WebView el cual si lo construimos con la ayuda de Visual Studio 2015 o 2013 ya lo tendremos referenciado por defecto.

Es decisión nuestra declararlo en la interfaz gráfica o en el code behind, sin embargo la documentación de las API de Microsoft oficial (MSDN) nos recomienda declarar todos los controles a través de XAML porque ya este fue optimizado para administrar la memoria y demás, sin embargo en casos particulares se puede declarar que en este caso será C#.

Code behind:
Windows.UI.Xaml.Controls.WebView webView = new Windows.UI.Xaml.Controls.WebView();
webView.Name = "myWebView";
XAML:
<WebView x:Name="myWebView" />

Continue reading “Windows Phone 8.1: WebView”

Windows Phone 8.1: Optical Character Recognition (OCR)


Siguiendo con el post anterior de los primeros pasos con la cámara se dejó preparado el terreno para este nuevo post.

Antes de comenzar es importante entender que es OCR y por supuesto, seguir el tutorial pasado.

En la última imagen del tutorial pasado en el método CreateBitmapFromCaptureElement se veía una otro método, ReadText.

Para comenzar a leer los caracteres contenidos en una imagen y en este caso obtenida de la cámara es obtener el empaquetado WindowsPreview.Media.Ocr, donde podremos instalarlo de la siguiente manera:

Instalar el NuGet

Abrir el Package Manager Console

Continue reading “Windows Phone 8.1: Optical Character Recognition (OCR)”

Windows Phone 8.1: Cómo usar la cámara, primeros pasos


Hace poco comencé con un proyecto bastante interesante el cual incluía un módulo de reconocer caracteres en una imagen, al lograr eso se podrían desplegar varios tipos de aplicaciones; sin embargo el primer obstaculo que encontré es que controlar la cámara del dispositivo no es como se hacía con sus antecesores (WP7 y WP8), es un poco más cercano a como se maneja en WindowsRT.

Por lo que primero que tenía que hacer era domar este dispositivo que accede a un nivel muy bajo en cuanto a Hardware (se me crasheó el móvil más de 30 veces!!!!), por lo cual decido compartirles esta serie de artículos hasta reconocer caracteres en Windows Phone 8.1, mecanismo que se denomina OCR (Optical Character Recognition).

Como estos artículos son nivel medio supondré que ya tienen creado el proyecto Windows Phone 8.1 XAML con C#.

Declarando los manifiestos

En el manifiesto de la App ir a la sección de Capabilities, seleccionar “Microphone” y “Webcam”

Continue reading “Windows Phone 8.1: Cómo usar la cámara, primeros pasos”

WinAPI en aplicaciones de escritorio


Cuando estamos desarrollando aplicaciones de escritorio con tecnologías Microsoft lo hacemos con WPF o WinForms, pero muchas veces necesitamos acceder a funcionalidades extra que nos proporciona Windows ya que este cuenta con un gran volumen de funciones para los desarrolladores el cual podemos tener acceso desde las entrañas de Windows hasta los más altos niveles como es la interfaz gráfica, ya sea modificandola a nuestro acomodo o simplemente porque el desarrollo lo necesita.

En el desarrollo de Malware es muy común hacer uso de WinAPI porque como ya les comentaba se puede tener acceso a un nivel muy cercano de Kernel de Windows, hacer estos movimientos en aplicaciones con C++ y C es muy sencillo ya que Windows proporciona los headers para usarlos de manera muy cómoda; el problema viene cuando queremos acceder a estas funcionalidades desde C# o Visual Basic ya que por su propia arquitectura no acceder de manera convencional estas API.

Para entrar un poco en detalle, las API de Windows están contenidas en unas DLL ya compiladas ya que casi todas las aplicaciones que ves en la pantalla (si estás en Windows) acceden a estas y para hacer llamados a código nativo desde aplicaciones administradas como es el caso de las aplicaciones de .Net, me explico, acceder a funciones de DLL’s construidas en lenguajes como C++ (No Visual C++)  o C para ser usadas en aplicaciones que funcionan bajo el CLR

Sin ir más allá en teoría ya que si estás en este post es porque algo debes saber de WinAPI, les presento un portal Web donde recopilan todas las funcionalidades y ponen el código en C# y VB de como debe ser usado, en las más comunes ponen ejemplos de uso.

http://www.pinvoke.net/