Hello World in Windows 10 IoT Core on Raspberry Pi

Yeah, I know it’s a bit late but I hope still someone will find this useful. Here goes a “Hello World” experiment which displays a “Hello World” and programmatically blinking the LED, which is the activity LED built-in available in the Raspberry Pi Model B Board.

[This post has been in my drafts folder for a long time due to some technical glitches. So please forgive any outdated content]

Here goes the device which I have used for experimenting –> Raspberry Pi2 (which is the latest available at the time of this article)

image_thumb1

Here are the steps I did to kick start.

Hardware Configuration

  1. Raspberry Pi 2 Model B
  2. 5V Power Adapter
  3. USB Keyboard
  4. USB Mouse
  5. WiFi Dongle
  6. TV which supports HDMI & HDMI Cable
  7. SD Card with Windows 10 IoT core for Raspberry Pi pre-loaded

Software Configuration

  1. Visual Studio 2015 Community Edition (with latest updates)

Hello World Sample

STEP 1 – Start with project template

Start with a Blank Universal Windows App. So that you can test your initial program in your laptop/PC itself – i.e., before you deploy it in Raspberry Pi you can have a sneak peek.

image_thumb3

STEP 2 – Action

I have these functionalities:

  1. Display a “Hello, World!” message when you execute the application
  2. Display a message “Hello, Windows IoT Core” when you click a button
  3. A button to “Exit” the application
  4. Switch ON the GREEN LED on the Raspberry Pi board up on clicking “LED ON” button
  5. Switch OFF the GREEN LED off the Raspberry Pi board up on clicking “LED OFF” button

My MainPage.xaml looks like this:

{code goes here}

Code behind – MainPage.xaml.cs looks like this:

STEP 3 – Execute the program in Raspberry Pi

Make sure you have connected to your WiFi from Raspberry Pi. Here in this example, I am demonstrating how to connect to it from Visual Studio to execute the app.

First, Make sure you have “ARM” processor type selected instead or x86 or x64.

image_thumb5

Select “Remote Machine”.

Most probably your Raspberry Pi wil be auto-detected so you just have to select it. Otherwise, provide the IP address which is shown in the Raspberry Pi screen in the field.

image_thumb7

image_thumb11

STEP 5 – RUN

Run the solution / Press F5. You will soon see the app up and running in Raspberry Pi screen. Now test the functionality.

image_thumb12

Reference:

  1. Sample – https://ms-iot.github.io/content/en-US/win10/samples/HelloWorld.htm
  2. Pin Mappings – https://ms-iot.github.io/content/en-US/win10/samples/PinMappingsRPi2.htm
  3. LED operation sample – https://ms-iot.github.io/content/en-US/win10/samples/RGBLED.htm
 

.NET misc. terminology

Few items which I had to revisit today due to some reason.

  1. AppDomain
    • Application domains, which are represented by AppDomain objects, help provide isolation, unloading, and security boundaries for executing managed code.
      Use application domains to isolate tasks that might bring down a process. If the state of the AppDomain that’s executing a task becomes unstable, the AppDomain can be unloaded without affecting the process. This is important when a process must run for long periods without restarting. You can also use application domains to isolate tasks that should not share data.
    • If an assembly is loaded into the default application domain, it cannot be unloaded from memory while the process is running. However, if you open a second application domain to load and execute the assembly, the assembly is unloaded when that application domain is unloaded. Use this technique to minimize the working set of long-running processes that occasionally use large DLLs.
    • Ref: https://msdn.microsoft.com/en-us/library/system.appdomain(v=vs.110).aspx 
  2. WCF Throttling
  3. WCF ConcurrencyMode.Reentrant
  4. WCF Performance