Debugar remotamente un aplicación WinForms en RaspberryPi

Si quieres desarrollar una aplicación creada mediante .NET para tu Raspberry Pi pero ejecutarla desde un IDE cómo es VisualStudio 2013 o Mono es posible gracias a un plugin que te permite realizar debug remoto en la Raspberry.

Para ello es necesario un par de requisitos:

"MonoDebugger"
http://www.giesswein-apps.at/mono

Descargas el plugin para VS2013 (todas las versiones), lo instalas y listo.


Una vez instalado te recomiendo que añadas una excepción al firewall de Windows, no te vaya a pasar como a mi que perdí mucho rato sin saber porque no encontraba mi RasPi.

Para facilitar la instalación es necesario instalar un par de programas en la RasPi.

Para poder enviar archivos por red debemos instalar samba, un cliente RDP para acceder remotamente y por último ejecutaremos nuestro "Mono Remote Debugger".

Antes de nada es bueno saber que con todo lo que instalaremos no necesitaremos acceder físicamente a la RasPi, con lo que la podemos conectar directamente al router o a un concentrador de red como es un switch o un hub y no habrá necesidad de conectarla a ninguna pantalla, alimentación de corriente y listos (para todo esto es importante que conozcamos la ip de la Raspberry Pi para acceder remotamente, si os es desconocida, antes de desconectar la pantalla informaros de la ip del dispositivo usando para ello el comando "ifconfig" en la terminal de Raspbian.).


Para acceder remotamente usaremos el programa putty.

"Putty"
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

Una vez instalado accederemos a nuestra Pi usando nuestro usuario mediante ssh, Por defecto los usuarios son:
usr: pi
pwd: raspberry

En nuestro caso la ip es : 192.168.1.133


Conectamos y usamos las credenciales.

"Samba" (opcional)
Para poder enviar archivos a nuestra Pi necesitaremos samba, para instalarlo usaremos el comando:

sudo apt-get install samba

Si quieres una configuración mas personalizada aquí tienes una guía sencilla para configurar samba:

http://raspberrywebserver.com/serveradmin/share-your-raspberry-pis-files-and-folders-across-a-network.html

"xrdp"
Para visualizar todo lo que pasa en el escritorio de nuestra pi podemos/debemos instalar un servidor

RDP, para usar nuestro Escritorio Remoto de Windows con la Raspberry Pi.

Para ello solo hay que usar el siguiente comando:

sudo apt-get install xrdp

Una vez todo instalado os recomiendo reiniciar el dispositivo, si es mediante "putty" usad el comando sudo reboot y ya podéis olvidaros de putty.

Para el siguiente paso será necesario retomar los archivos comprimidos del "plugin para VS2013", dentro podemos ver 2 carpetas "RemoteClient" y "VisualStudio2013". La primera será necesario enviarla a la RasPi, ya sea por samba o por usb, os recomiendo que compartáis una carpeta desde vuestro ordenador para acceder desde la raspi mediante red y samba desde el Escritorio Remoto o simplemente lo paséis mediante USB. La segunda carpeta es un instalador de el plugin para VisualStudio, ejecutamos y listo, no tiene complicación alguna.

Llegados a este punto usaremos el Escritorio Remoto para ejecutar desde el terminal el servidor remoto "MonoDebugger.MonoServer.exe", accedemos a la carpeta que lo contiene y lo ejecutamos con:
sudo mono MonoDebugger.MonoServer.exe

Una vez ejecutado podemos crear un proyecto por ejemplo Windows Forms y ejecutarlo mediante el menú Debug y la opción "Start Mono-Debugging(remote)".


Veremos que aparece un popup para la selección de la máquina remota.


Si todo es correcto veremos nuestra aplicación ejecutarse en nuestra Raspberry Pi usando el Escritorio Remoto. La consola de Raspbian nos mostrará los mensajes de la aplicación en caso de imprimirlos mediante consola durante la ejecución de nuestro programa.


MonoDebugger

Comentarios

Entradas populares de este blog

Desarrollo de aplicaciones para dispositivos de muñeca Garmin con Connect IQ

Mostrar datos BMP180 mediante un OLED I2c LED LCD Display con Arduino Nano

Guía para grabar una imagen de Raspberry Pi a una SD en Windows (XP,Vista,7,8,8.1,10)