Listing 1 A Simple TinyCLR application
using System;
using System.Threading;
using Microsoft.SPOT;
namespace Onward
{
public class HelloWorld
{
public HelloWorld() {}
public void CountdownToExcitement()
{
// basic debug output example
Debug.Print("Ready...");
for (int i = 10; i > 0; i--)
{
Thread.Sleep(1000);
Debug.Print(i.ToString());
}
Debug.Print("Hello World!");
// throw an exception
throw new Exception("Oops, I broke!");
}
public static void Main()
{
// create a HelloWorld instance
HelloWorld hello = new HelloWorld();
try
{
// call a method of the instance
hello.CountdownToExcitement();
}
catch (Exception ex)
{
// dump useful debug info
Debug.Print("STACK");
Debug.DumpStack();
Debug.Print("HEAP");
Debug.DumpHeap();
}
}
}
}
Listing 2 Using the InputPort
using Microsoft.SPOT.Hardware;
...
public bool ReadGPIO39()
{
InputPort input = new InputPort(
Cpu.Pin.GPIO39, // Use GPIO39 for digital input
true, // enable glitch filtering
Port.ResistorMode.PullUp // enable the internal pull-up
);
// returns true for high, false for low state
return input.Read();
}
Listing 3 Using the OutputPort
using Microsoft.SPOT.Hardware;
...
public void SetGPIO38(bool state)
{
OutputPort output = new OutputPort(
Cpu.Pin.GPIO38, // use GPIO38 for digital output
false // set the inital state to low
);
// set the pin state - true for high, false for low
output.Write(state);
}
Listing 4 Using the TristatePort
using Microsoft.SPOT.Hardware;
...
private TristatePort tristate = new TristatePort(
Cpu.Pin.GPIO37, // use GPIO37 for digital I/O
false, // set initial state to low
true, // turn on glitch filtering
Port.ResistorMode.Disabled // disable internal pull up/down
);
public bool GPIO37State
{
set
{
// make sure it's not high-Z
GPIO37HighZ(false);
// set the state
tristate.Write(value);
}
get
{
// make sure it's not high-Z
GPIO37HighZ(false);
// get the state
return tristate.Read();
}
}
public void GPIO37HighZ(bool state)
{
if(state)
{
// make high-Z
if(tristate.Active)
tristate.Active = false;
return;
}
// reconnect
if(! tristate.Active)
tristate.Active = true;
}
Listing 5 Using the InterruptPort
using Microsoft.SPOT.Hardware;
...
InterruptPort intPort;
public void SetupInterrupt()
{
intPort = new InterruptPort(
Cpu.Pin.GPIO39, // use GPIO39 for interrupts
true, // enable glitch filtering
Port.ResistorMode.PullUp, // enable the internal pull-up
Port.InterruptMode.InterruptEdgeLow // trigger when the line goes
// low
);
intPort.OnInterrupt += new GPIOInterruptEventHandler(
intPort_OnInterrupt);
}
void intPort_OnInterrupt(Cpu.Pin port, bool state, TimeSpan time)
{
// do work
}