#WINDOWS10- Display Heart Rate Band battery status in a Windows Universal App #BLE

Hola!

Series

1. Pair Heart Rate Band using Bluetooth LE to be used in a Windows Universal App

2. Create a Windows Universal App and access to Heart Rate Band information

3. Display Heart Rate Band battery status in a Windows Universal App

In my previous post, I wrote a series of steps to create a Windows Universal App and using this app read information from a Heart Rate Band. This band also exposes the battery charge as a characteristics, so we need to update our package manifest to read this value.

Now we can access to a device Service to read the battery charge value. In order to do this, we can use these lines of code

Now we can really Start to have an app displaying all this information.

Saludos @ Madrid

/El Bruno

References

– Polar Heart Rate Sensor H7, http://www.polar.com/us-en/products/accessories/H7_heart_rate_sensor

#WINDOWS10- Mostrar la carga de la batería de la Heart Rate Band en Windows Universal App #BLE

Hola!

Series

1. Emparejar Heart Rate Band via BlueTooth LE para utilizarlo en Windows Universal App

2. Crear una Windows Universal App y mostrar la información de Heart Rate Band

3. Mostrar información de la carga de la batería de Heart Rate Band

En el post anterior vimos cómo crear una Windows Universal App, y configurar la misma para sacar información de las pulsaciones. Si modificamos el manifiesto del proyecto, podemos además mostrar información de la batería del dispositivo. Para esto agregamos la función battery

El siguiente paso es obtener el valor de la carga de la batería. A diferencia del post anterior, en donde recibíamos los valores en un evento, en este caso accederemos a la característica del device y leeremos el valor de la misma.

Esto ya nos permite tener una app donde se muestren los valores del Heart Rate y la carga de la batería.

Saludos @ Madrid

/El Bruno

References

– Polar Heart Rate Sensor H7, http://www.polar.com/us-en/products/accessories/H7_heart_rate_sensor

#WINDOWS10- Display live Heart Rate information in Windows Universal app using Bluetooth LE #BLE

Hola!

Series

1. Pair Heart Rate Band using Bluetooth LE to be used in a Windows Universal App

2. Create a Windows Universal App and access to Heart Rate Band information

In my previous post I wrote on how to connect the heart rate band using Bluetooth and Windows 10. In today’s post I’ll how to quicly create an app to display the heart rate values

1. Let’s create an Windows Universal App

2. Edit package manifest

Add the Bluetooth generic attribute profile [<DeviceCapability Name=bluetooth.genericAttributeProfile>]

Add [<Device Id=any>] to connect with any device

Add the heart rate service[<Function Type=name:heartRate/>]

3. Nos let’s write some source code. In the Windows Load event, we will analyze the loca Devices collection and search for the name of our device “Polar H7 498C1817”

4. Once we found the device, is time to get the device service. This BLE Service is the entry point for the characteristics of the device. This device is simple enough, and based on our settings it only publish Heart Rate information. So let-s subscribe to the ValueChanged event and enable the Notify mode.

5. Now let’s process the sensor information. We get a byte array wand the 2nd byte is the current HR value

Next one, a full app interacting with the polar device.

Saludos @ Madrid

/El Bruno

References

– Polar Heart Rate Sensor H7, http://www.polar.com/us-en/products/accessories/H7_heart_rate_sensor

#WINDOWS10- 2. Crear una Windows Universal App y mostrar la información de Heart Rate Band utilizando #BLE

Hola!

Series

1. Emparejar Heart Rate Band via BlueTooth LE para utilizarlo en Windows Universal App

2. Crear una Windows Universal App y mostrar la información de Heart Rate Band

En el post anterior comenté como emparejar la banda para tomar los latidos del corazón utilizando Bluetooth LE y Windows 10. Hoy veremos cómo crear una app aplicación que se conecte con el device y muestre la información del mismo.

1. Empezamos como siempre creando una Windows Universal App

2. Editamos el manifiesto de la app y

Agregamos la capacidad de conectarse a un dispositivo Bluetooth [<DeviceCapability Name=bluetooth.genericAttributeProfile>]

Luego en las capacidades de los dispositivos, agregamos la sentencia [<Device Id=any>] que nos permite conectarnos con cualquier dispositivo

Y finalmente el servicio al que nos conectaremos que es el de tipo [<Function Type=name:heartRate/>]

Clipboard03

3. Ahora vamos a escribir un poco de código. En este caso, en el Load de la Window, recorreremos una colección de Devices locales buscando el nombre del Polar. “Polar H7 498C1817”

4. Una vez encontrado el device, accederemos al mismo a través del servicio que publica. Este servicio BLE es el que expone las diferentes características del dispositivo. En este caso, sabemos que una de ellas es la que envía el valor del Heart Rate, nos suscribimos al evento ValueChanged y activamos el modo Notify.

Clipboard05

5. Solo nos queda procesar la información que recibimos del sensor. En este caso es un array de bytes, donde el 2do byte es el valor actual del sensor (los latidos del corazón)

Clipboard07

En esta demo lo escribimos en la ventana de debug, en el próximo post lo mostraremos en la app.

Saludos @ Madrid

/El Bruno

References

– Polar Heart Rate Sensor H7, http://www.polar.com/us-en/products/accessories/H7_heart_rate_sensor

ENG [#VS2015] Hello Face: #FaceAPIs in a Wpf App (3)

Hello!

New post for Azure Machine Learning Face APIs series

  1. Face APIs in Azure
  2. Hello Face: Face APIs in a Console App
  3. Hello Face: Face APIs in a WPF App

In the previous post I shared the 10 sample lines that we can user as a Face APIs basic functionality in a console app to :

  • detect faces
  • detect age on each face
  • detect sex on each face

Moreover, another option that does Face APIs provide is the ability to identify the region on the original image for each detected face. In the next example, I’ve added a WPF project and I have referenced the ClientLibrary. It is based on one of the examples in the Face APIs SDKs.

This project has 2 important files

lib \ FaceApiHelper.cs. This class is the one used for image processing using Face APIs service.

UserControls \ Face.cs. Represents a User Control, with an image to show the face, and also a series of labels to show the age and sex.

Clipboard02

The MainWindow.xaml main window features a button to select an image of the disk and by under 2 sections showing the original image with boxes on each side found and a list of the found faces. The code by pressing the button is very simple

Clipboard04

Important: The key to use the Face API service is part of the settings of the app.

The StartFaceDetection() function returns 2 collections of Faces. One with the information age and sex of the found face, the other is a special object used to “paint” boxes on the original image.

Clipboard02

If you’ve been able to see the code and not vomiting with error handling, you can try the application. An example of the app in operation is as follows:

2015 06 02 Face Api Wpf

If you want to see the Special transformation to paint the boxes, you can take a look at CalculateFaceRectangleForRendering() .

The code can be downloaded from https://github.com/elbruno/ProjectOxford/tree/master/Samples

Greetings @ Medrid

/El Bruno

[#AZURE] Hello Face: #FaceAPIs en una Wpf App (3)

Hola!

Nuevo post para la serie de Face Api en Azure

  1. Face APIs en Azure
  2. Hello Face: Face APIs en una Console App
  3. Hello Face: Face APIs en una WPF App

En el post anterior puse las 10 líneas de ejemplo con las que podemos incorporar una funcionalidad básica de Face APIs en una app de consola para:

  • detectar rostros y sobre los mismos
  • detectar edad
  • detectar sexo

Además otra opción que no brinda Face APIs es la capacidad de identificar la región en la que está el rostro sobre la imagen original. En el siguiente ejemplo, he agregado un proyecto de tipo WPF y he referenciado la ClientLibrary en el mismo. El mismo se basa en uno de los ejemplos del SDK de Face APIs.

Este projecto tiene 2 elementos importantes

lib \ FaceApiHelper.cs. Esta clase es la que tiene la llamada y posterior procesamiento de las imagenes que nos retorna el servicio de Face APIs.

UserControls \ Face.cs. Representa un User Control, con una imagen para mostrar la cara, y además una serie de labels para mostrar la edad y el sexo.

Clipboard02

La ventana principal MainWindow.xaml posee un boton para seleccionar una imagen del disco y por debajo 2 secciones donde se muestra la imagen original con recuadros en cada cara encontrada y una lista con las caras encontradas. El código al presionar el botón es muy simple

Clipboard04

Importante: La key para utilizar el servicio de Face API es parte de las settings de la app. 

La funcion StartFaceDetection() retorna 2 colecciones de Faces. Una de ellas con la información de edad y sexo del rostro encontrado, la otra es un objeto especial utilizado para “pintar” recuadros sobre la imagen original.

Clipboard02

Si has podido ver el código y no vomitar con el control de errores, ya puedes probar la aplicación. Un ejemplo de la app en funcionamiento es el siguiente:

2015 06 02 Face Api Wpf

Si quieres ver la transformación especial para pintar los recuadros, puedes echarle un vistazo a CalculateFaceRectangleForRendering().

El código se puede descargar desde https://github.com/elbruno/ProjectOxford/tree/master/Samples

Saludos @ Madrid

/El Bruno

ENG [#VS2015] Hello Face: #FaceAPIs in a Console App (2)

Hello!

New post for Azure Machine Learning Face APIs series

  1. Face APIs in Azure
  2. Hello Face: Face APIs in a Console App

After the setup of our Azure environment, we now can use Face APIs. Next step is to download the SDK and take a look at the examples. At this time the SDK contains examples for both, .Net and Android. Within the .Net sample there is a WPF app which consumes a PCL which is responsible for making the calls to the Machine Learning Face API services.

Clipboard03

The good thing about this model is that the PCL is easily portable to other projects. The following steps show how consume Face API services in a console app, using the PCL included in the SDK.

1. Add a new console application in the solution

2. Add a reference to ClientLibrary

3. Then in the Main we need to define a variable with our subscription key, and for this example we will open a local image to be processed

4. The following function displays the steps necessary for processing an image

Clipboard05

5. And the result is similar to the following one

Clipboard07

6 That’s it !

As always, can always download the complete sample from GitHub https://github.com/elbruno/ProjectOxford

Greetings @ Home

/El Bruno

Face APIs SDK, http://www.projectoxford.ai/sdk

[#AZURE] Hello Face: #FaceAPIs en una Console App (2)

Hola!

Nuevo post para la serie de Face Api en Azure

  1. Face APIs en Azure
  2. Hello Face: Face APIs en una Console App

Una vez configurado nuestro entorno de Azure para poder consumir Face APIs, lo siguiente es descargar el SDK y darle un vistazo a los ejemplos del mismo. En este momento el SDK contiene ejemplos para .Net y Android. Dentro del ejemplo para .Net hay una app WPF de ejemplo que consume un PCL que es el encargado de hacer las llamadas a los servicios de Machine Learning de Face API.

Clipboard03

Lo bueno de este modelo, es que el PCL es fácilmente portable a otro tipo de proyectos. Los siguientes pasos muestran como consumir los servicios de Face API en una app de Consola, utilizando el PCL del SDK.

1. Agregar una nueva aplicación de consola a la solucíón

2. Agregar una referencia a ClientLibrary

3. Luego en el Main debemos definir una variable con nuestra subscription key, y para este ejemplo abriremos una imagen local para procesarla

4. La siguiente función muestra los pasos necesarios para procesar una imagen

Clipboard05

5. El resultado es similar al siguiente

Clipboard07

6. Listo !!!

Y el ejemplo, como siempre se puede bajar desde GitHub https://github.com/elbruno/ProjectOxford

Saludos @ Home

/El Bruno

Face APIs SDK, http://www.projectoxford.ai/sdk

ENG [#IOT] Different behaviors for an App based on the app architecture (9 on N) #RaspberryPi2 #Windows10

Hello!

New post for Windows 10 and Raspberry Pi 2 series

  1. Hardware and software (1 on N)
  2. Boot from SD card in the device (2 of N)
  3. Hello World mode! (3 of N)
  4. Visual Studio deployment process and Web Management app (4 on N)
  5. Hello Blinky !!! (5 on N)
  6. Some admin tasks, like change password and change name (6 on N)
  7. List of connected devices in the Raspberry Pi 2 (7 on N)
  8. Deploy an app using the deploy package (8 on N)
  9. Different behaviors for an App based on the app architecture

If you’re an old school developer when you find a change one of the oldest APIs, for sure you’ll suffer a heart attack. That’s what happened with the classical System.Environment. The following image shows the difference that we have between a classic WPF app with .net 4.5 and a Universal App for Windows 10.

Clipboard07

Now a Universal App will execute in a controlled environment (Sandbox), whether on a laptop, a smartphone or a device. This implies that the app capabilities are tied to this Sandbox. For example, what formerly used to get from the Environment, now perhaps we must look for it in the Package of the application. The architecture of the processor is an example, and the following code shows an example to validate if the app is running on an ARM processor.

Clipboard10

While the idea behind Universal Apps is to have the maximum code unified for all platforms, should take into account the capabilities of each platform. For example, in ARM we don’t have the possibility to use MessageDialogs so if we want to show a message we have to do a bit of defensive programming .

Clipboard12

This allows us to display a message in the mode dialog on a laptop or tablet

Clipboard14

And for the case of ARM, the message in a TextBlock as part of the app.

Clipboard01

The sample code on github

https://github.com/elbruno/W10Rpi2/tree/master/SystemInfoV02

Saludos @ Madrid

/El Bruno

References

Environment.Is64BitProcess, https://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess(VS.100).aspx

MessageDialog, https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog.aspx

[#IOT] Diferentes comportamientos en base arquitectura de la app (9 de N) #RaspberryPi2 y #Windows10

Hola !

Nuevo post para la serie de Windows 10 y Raspberry Pi 2

  1. Hardware y software (1 de N)
  2. Montando la SD en el device (2 de N)
  3. Ahora si el Hello World ! (3 de N)
  4. Sobre el proceso de despliegue desde VS y Web Management app (4 de N)
  5. Hello Blinky !!! (5 de N)
  6. Acciones de administrador, cambiar password, cambiar nombre, etc (6 de N)
  7. Accediendo a los devices conectados (7 de N)
  8. Desplegando una app desde un paquete (8 de N)
  9. Diferentes comportamientos en base arquitectura de la app

Si eres un developer de vieja escuela, cuando te cambian una de las APIs más antiguas te puede dar un infarto. Eso es lo que ha pasado con la clásica System.Environment. La siguiente imagen muestra la diferencia que tenemos entre una app clásica WPF con .Net 4.5 y una Universal App para Windows 10.

Clipboard07

Ahora bien, una Universal App se ejecuta en un entorno controlado (sandbox), ya sea en un laptop, un smartphone o un device. Esto implica que las capacidades de la app están atadas a este Sandbox. Por ejemplo, lo que antes solíamos obtener desde el Environment, ahora tal vez debemos buscarlo en el Package de la Aplicación. La arquitectura del procesador es un ejemplo, y el siguiente código muestra un ejemplo para validar si la app se está ejecutando en un procesador ARM.

Clipboard10

Si bien la idea detrás de las Universal Apps es tener el máximo código unificado para todas las plataformas, hay que tener en cuenta las capacidades de cada plataforma. Por ejemplo, en ARM no tenemos la posibilidad de mostrar MessageDialogs así que si queremos mostrar información tenemos que hacer un poco de programación defensiva.

Clipboard12

Esto nos permite mostrar un mensaje en modo diálogo en una laptop o tablet

Clipboard14

Y para el caso de ARM, el mensaje en un TextBlock como parte de la app.

Clipboard01

El código de ejemplo en github

https://github.com/elbruno/W10Rpi2/tree/master/SystemInfoV02

Saludos @ Madrid

/El Bruno

References

Environment.Is64BitProcess, https://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess(VS.100).aspx

MessageDialog, https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog.aspx