[#VS2013] HowTo: Conectar con un device #BlueTooth utilizando un PIN (thanks #32feet!)

Hola!

Hace poco escribí en un post, las 4 líneas que podíamos usar para listar los devices bluetooth que tenemos registrados en local en nuestro ordenador. Para dejar el ejemplo completo lo que me falta son los siguientes pasos

1. Conexión al device bluetooth

2. Recepción de información desde el device bluetooth

3. Envío de información desde el device bluetooth

Hoy empiezo por la primera con esta simple app de consola. El código es bastante simple, lo único que debería remarcar es

- Utilizo 32Feet para simplificar el acceso a BT (https://32feet.codeplex.com)

- Utilizo LinQ para acceder al device a través del nombre del mismo

- Una vez identificado el device, registro el address del mismo

- En la líneas 13 y 21, realizo el pareo con el PIN.

- Una vez conectado, ya puedo comenzar a leer información del device, línea 40.

Mañana más … ahh y por cierto, esto mismo con Windows Phone es casi imposible Sad smile

Saludos @ Home

El Bruno

image image image Google

[#SIGNALR] Error: Html client does not raise OnConnected() method on Server Hub

Hola!

And nor more SignalR stuff. Today is an issue, a tricky one. When in an HTML app the signalR html client does not raise the OnConnected() event on the hub. Sometime ago I wrote a post with a patter to deliver different set of messages to different groups of clients in the same hub..

Inside this code, the main approach is to add some work in the OnConnected(). And at this point this event became more important, because is the first contact of a client with the hub. If you think in the Hub code, can be something like this.

So in the other side, we can create a very simple Html app. This app will connect to the hub and when the connection is established, it will call the JoinToArea() function

So far the code is good. But if you add some trace and debug you’ll see that, even if the call goes fine to the JoinToArea() function in the hub, it never get registered in the OnConnected() event hub. The main issue is because the client is never initialized in the page.

So, to fix this, let´s call a dummy function before we invoke the JoinToArea(). Line 7 and it’s done

Easy Open-mouthed smile

Saludos @ Home

El Bruno

image image image Google

[#SIGNALR] Error: Html client does not raise OnConnected() method on Server Hub

Hola!

Y seguimos con SignalR, en este caso para denunciar a clientes HTML que no entran en el evento OnConnected() del Hub. Hace varios meses que escribí un post donde explicaba una opción para poder definir diferentes canales o grupos de mensajes dentro de un mismo hub.

La base de este patrón es una vez iniciada la sesion, invocar a una funcíón en el server que separa lso grupos en una colección particular. Es en este punto donde el evento OnConnected() toma relevancia porque es un momento muy bueno para poder tener una primera identificación de un cliente conectado al Hub.

Ahora bien, veamos un ejemplo simple de un cliente HTML que se conecta a un hub y cuando la función start() del hub ha terminado invoca la función JoinToArea

A primera vista el código está bien, si activas las trazas, la llamada a JoinToArea() en el hub se realiza correctamente. El problema está en que no se lanza el OnConnected() del hub, ya que no hay ningún requerimiento contra el cliente del hub.

La forma de forzar la llamada al OnConnected es invocar una función dummy del cliente del hub antes de llamar al JoinToArea(). El ejemplo anterior se completa con la línea  7

Fácil Open-mouthed smile

Saludos @ Home

El Bruno

image image image Google

[#SIGNALR] FIX: #WindowsPhone and the delayed messages (goes slow slow slow the delivery of messages in WP)

Hello!

SignalR is a platform to real time communications. When you begin creating apps go like a shot, and the truth is that the level of abstraction that gives you is great. Customers .net having to WPF, Win8 and Html work seamlessly, however (isn’t a but) If you think app Windows Phone (8.1 for example), you can find with the strange situation in which the emulator everything is perfect and in the device, not so much.

Note, is not not work but that messages are quite slow in coming (from 5 seconds up to minutes). The test scenario also includes complex authentication methods, is a Website of Azure, which plays the role of SignalRHub.

If we activate the trace in the WP client we can see that the pattern of behavior of the connection is

Connecting, Connected, Reconnecting, Connected, Reconnecting, Connected,…

In few seconds the client connects and disconnected several times. This leads us to think that management of connections (ping that bad say you) it may be wrong, and that the solution is to change the type of transport.

If we look at the problem from a perspective more ampluica, we can find troubleshooting (link), the next solution for Silverlight apps in SignalR :

Messages are delayed when using server sent events on Silverlight. To force long polling to be used instead, use the following when starting the connection:

connection.Start(new LongPollingTransport());

Luckily this solution works also for Windows Phone apps. Now, if you see why this type of transport if works, intuition leads you to MSDN. The amazing thing is that this class is not documented or anything like that (link)

image

So now using touch using LongPollingTransport() , wait for the friends of MSDN to complete documentation or view within the code of SignalR operation of this kind.

Those options or… use a debugger such as Fiddler to make differences there are between the transport by default and LongPollingTransportBut that is for another post Winking smile

Resources: http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting#azure

Greetings @ Somewhere around

The Bruno

image image image Google

[#SIGNALR] Fix: #WindowsPhone y los delayed messages (va lento lento lento el delivery de mensajes en WP)

Hola!

SignalR es una plataforma increíble para real time communications. Cuando comienzas ha crear apps vas como un tiro, y la verdad es que el nivel de abstracción que te da es grandioso. Los clientes .Net que tiene para WPF, Win8 y Html funcionan a la perfección, sin embargo (no es un pero)  si creas un app Windows Phone (8.1 por ejemplo), te puedes encontrar con la extraña situación en la que en el emulador todo va perfecto y en el device, no tanto.

Ojo!, no es que no funcione sino que los mensajes tardan bastante en llegar (desde 5 segundos hasta minutos). El escenario de prueba tampoco incluye complejos métodos de autenticación, es un Website de Azure que cumple el papel de SignalR Hub.

Si activamos las trazas en el cliente de WP podemos ver que el patrón de comportamiento de la conexión es

Connecting, Connected, Reconnecting, Connected, Reconnecting, Connected, …

En pocos segundos el cliente, se conecta y desconecta varias veces. Esto nos lleva a pensar en que la gestion de conexiones (el ping que mal le decimos) puede estar mal, y que la solución es cambiar el tipo de transporte.

Si vemos el problema con una perspectiva más ampluica, podemos encontrar en SignalR troubleshooting (link), la siguiente solución para apps Silverlight:

Messages are delayed when using server sent events on Silverlight. To force long polling to be used instead, use the following when starting the connection:

connection.Start(new LongPollingTransport());

Por suerte esta solución funciona también para apps Windows Phone. Ahora, si se te da por ver porqué este tipo de transporte SI FUNCIONA, la intuición te lleva hacia MSDN. Lo increíble es que esta clase no está documentada ni nada parecido (link)

image

Asi que a usar ahora toca usar LongPollingTransport() , esperar que los amigos de MSDN completen la documentación o ver dentro del código de SignalR que funcionamiento de esta clase.

Esas opciones o … usar un debugger como Fiddler para que diferencias hay entre el transporte por defecto y el LongPollingTransport. Aunque eso va para otro post Winking smile

Recursos: http://www.asp.net/signalr/overview/signalr-20/troubleshooting-and-debugging/troubleshooting#azure

Saludos @ Somewhere around

El Bruno

image image image Google

[#IOT] Windows on Devices, all for IoT (Internet of Things)

image

Hello!

A couple of days ago I wrote a post where redirected people to the program “Windows on Devices” from Microsoft. Many people have signed up in it just to get a free Intel Galileo, however the program is something much broader. I had put aside some extra time to extend a bit the original content.

  • The first thing to notice is that this program is a program for DEVELOPERS.

If you already know platforms such as Arduino, the transition to the new tools (both hw and sw) will be almost natural. Of course, you can use Visual Studio as a tool for development (would have said that this is of the most cool of the program?)

  • Another interesting detail is that all of the existing code of Arduino it will be compatible with a Galileo .

Hmmmmmmm … I have my doubts. The code example of a Blinky is the same in Arduino, so OK here. What happens is that we all know that the “Hello World” run always, we will see what happens when you move more complex code.

image

Note: if you have created very complex code in Arduino is to kill you. How complicated is not migration but some specific libraries for sensors not standard.

Just go to the main page of the program to be able to see everything.

  • The Galileo as it comes does not work, you have to “iron” a special image through a SD.

Beware, if you have a Galileo before, can not install the VS plugIn and give the keyboard and whisky. You will first have to “prepare” the Galileo with a few simple steps (link)

Note: welcome back telnet.

  • This program is brother or part of ISS, Intelligence System Services.

Now wonder, and this? queloque? This, ISS is a series of services assembled in Azure to work specifically with IoT projects. And behind this thing, .net Compact Fwk? not… Windows Embedded! Now lightens everything somewhat, Galileo will execute a WE in order to have everything more controlled.

If we add you compatibility with Arduino, with Azure integration and support from ISS, this program is really

A GOOD QUALITY FOR THAT BET THE DEVELOPERS BELIEVE CONNECTED APPLICATIONS.

Finally, if your head sound like words like “universal Apps”, “C#”, etc. Gives you a tour of the FAQ to see that still nothing.

Home: http://dev.windows.com/en-us/featured/Windows-Developer-Program-for-IoT

Git: http://ms-iot.github.io/content/SampleApps.htm 

FAQ: http://ms-iot.github.io/content/WelcomeAndFAQ.htm

Saludos @ Home

El Bruno

image image image Google

[#IOT] Windows on Devices, all IoT (Internet of Things o Internet of Todo como decimos aqui)

 

image

Hola!

Hace un par de días escribí un post donde redireccionaba a la gente al programa “Windows on Devices” de Microsoft. Muchas de las personas se han apuntado en el mismo solo para conseguir un Intel Galileo gratis, sin embargo el programa es algo mucho más amplio. Tenía pendiente extender un poco el contenido del mismo así que para esto este post.

  • Lo primero que hay que remarcar es que este programa es un programa para developer.

Si ya conoces plataformas como Arduino, el paso a las nuevas herramientas (tanto de hw como de sw) será casi natural. Eso sí, teniendo en cuenta de que puedes utilizar Visual Studio como herramienta de desarrollo (he dicho que esto es de lo más cool del programa?)

  • Otro detalle interesante es que todo el código existente de Arduino será compatible con un Galileo.

Hummmmmm … me quedan mis dudas. El código de ejemplo de un Blinky es igual que en Arduino, hasta ahí OK. Lo que pasa es que todos sabemos que los “Hello World” funcionan siempre, veremos que pasa cuando migremos código más complejo.

image

Nota: Si has creado código muy complejo en Arduino es para matarte. Lo complicado no será la migración sino algunas bibliotecas específicas para sensores no estandard.

Solo hay que ir a la página principal del programa para poder ver TODO.

  • El Galileo como viene no sirve, hay que “plancharle” una imagen especial a través de una SD.

Ojo con esto, si tienes un Galileo de antes, no podrás instalar el plugIn de VS y darle al teclado y al whisky. Primero tendrás que “preparar” el Galileo con unos sencillos pasos (link)

Nota: welcome back telnet.

  • Este programa es hermano o parte de ISS, Intelligence System Services.

Ahora te preguntarás, y esto? queloqué? Pues eso, ISS es una serie de Servicios montados en Azure para trabajar específicamente con proyectos de IoT. Y detrás de esto que hay, .Net Compact Fwk? no .. Windows Embedded !!! Ahora se aclara todo un poco, Galileo ejecutará un WE para poder tener todo más controlado.

Si a eso le sumamos la compatibilidad con Arduino, la integración con Azure y el soporte de ISS, este programa es realmente

UNA APUESTA BUENÏSIMA PARA QUE LOS DEVELOPERS CREEMOS APLICACIONES CONECTADAS.

Por último, si en tu cabeza suenan palabras como “universal Apps”, “C#”, etc. Date una vuelta por el FAQ para ver que todavía nada.

Home: http://dev.windows.com/en-us/featured/Windows-Developer-Program-for-IoT

Githttp://ms-iot.github.io/content/SampleApps.htm

FAQ: http://ms-iot.github.io/content/WelcomeAndFAQ.htm

Saludos @ Home

El Bruno

image image image Google