System.Exception occurred in GHI.Networking.dll - EthernetENC28 module

Using Cerberus board, with 4.3 SDK. I’m the same guy that had a problem with the Tunes module earlier last week.

Getting an exception every time I deploy. I put a break point in the code, but it throws an exception as soon as it instantiates the module. Used a different Ethernet ENC28 module and new Cerberus board with the same results.

The general idea is to poll a temperature module and then be able to post the retrieved temp to a website that is running on the Cerberus. Pretty simple I thought.

Maybe there’s a conflict going on with another module? I have all but 1 socket being used.
Socket 1- Unused
Socket 2- RFPipe
Socket 3-Tunes
Socket 4-led7C
Socket 5- Ethernet ENC28
Socket 6-Button
Socket 7-led7C (second one)
Socket 8-USB Client DP (for power)

Here’s the exception and I’ll paste the code right below it:
Found debugger!

Create TS.

Loading start at 807a53c, end 80a04c8

Assembly: mscorlib (4.3.1.0) Assembly: Microsoft.SPOT.Native (4.3.1.0) Assembly: Microsoft.SPOT.Hardware (4.3.1.0)
Assembly: Microsoft.SPOT.Graphics (4.3.1.0) Assembly: Microsoft.SPOT.TinyCore (4.3.1.0)
Assembly: Microsoft.SPOT.IO (4.3.1.0) Assembly: System.IO (4.3.1.0) Assembly: Microsoft.SPOT.Hardware.Usb (4.3.1.0)
Assembly: Microsoft.SPOT.Hardware.SerialPort (4.3.1.0) Assembly: Microsoft.SPOT.Hardware.PWM (4.3.1.0)
Loading Deployment Assemblies.

Attaching deployed file.

Assembly: Gadgeteer.WebServer (2.43.1.0) Attaching deployed file.

Assembly: Microsoft.SPOT.Net.Security (4.3.1.0) Attaching deployed file.

Assembly: GHIElectronics.Gadgeteer.FEZCerberus (4.3.8.1) Attaching deployed file.

Assembly: GHI.Hardware (4.3.8.1) Attaching deployed file.

Assembly: Microsoft.SPOT.Net (4.3.1.0) Attaching deployed file.

Assembly: GTM.GHIElectronics.EthernetENC28 (4.3.8.1) Attaching deployed file.

Assembly: System.Net.Security (4.3.1.0) Attaching deployed file.

Assembly: GTM.IngenuityMicro.RfPipe (4.3.1.0) Attaching deployed file.

Assembly: GHI.Networking (4.3.8.1) Attaching deployed file.

Assembly: Gadgeteer.WebClient (2.43.1.0) Attaching deployed file.

Assembly: System (4.3.1.0) Attaching deployed file.

Assembly: GTM.GHIElectronics.Button (4.3.8.1) Attaching deployed file.

Assembly: Gadgeteer.SPI (2.43.1.0) Attaching deployed file.

Assembly: HomebaseV3 (1.0.0.0) Attaching deployed file.

Assembly: GHI.Usb (4.3.8.1) Attaching deployed file.

Assembly: System.Http (4.3.1.0) Attaching deployed file.

Assembly: GTM.GHIElectronics.USBClientDP (4.3.8.1) Attaching deployed file.

Assembly: GTM.GHIElectronics.LED7C (4.3.8.1) Attaching deployed file.

Assembly: GTM.GHIElectronics.Tunes (4.3.8.1) Attaching deployed file.

Assembly: Gadgeteer (2.43.1.0) Resolving.

The debugging target runtime is loading the application assemblies and starting execution.
Ready.

‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\mscorlib.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Native.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Hardware.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Graphics.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.TinyCore.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.IO.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\System.IO.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Hardware.Usb.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Hardware.SerialPort.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Hardware.PWM.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Net.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Gadgeteer\Core\Assemblies.NET Micro Framework 4.3\le\Gadgeteer.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\System.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Gadgeteer\Core\Assemblies.NET Micro Framework 4.3\le\Gadgeteer.WebServer.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\Microsoft.SPOT.Net.Security.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics\NETMF v4.3 SDK\Libraries\le\GHI.Hardware.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics\NETMF v4.3 SDK\Libraries\le\GHI.Usb.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics.NET Gadgeteer SDK\Mainboards\FEZCerberus\NETMF 4.3\le\GHIElectronics.Gadgeteer.FEZCerberus.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics\NETMF v4.3 SDK\Libraries\le\GHI.Networking.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Gadgeteer\Core\Assemblies.NET Micro Framework 4.3\le\Gadgeteer.SPI.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics.NET Gadgeteer SDK\Modules\EthernetENC28\NETMF 4.3\le\GTM.GHIElectronics.EthernetENC28.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\System.Net.Security.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\IngenuityMicro\Microsoft .NET Gadgeteer\Modules\RfPipe\NETMF 4.3\le\GTM.IngenuityMicro.RfPipe.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.3\Assemblies\le\System.Http.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\Microsoft .NET Gadgeteer\Core\Assemblies.NET Micro Framework 4.3\le\Gadgeteer.WebClient.dll’, Symbols loaded.
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics.NET Gadgeteer SDK\Modules\Button\NETMF 4.3\le\GTM.GHIElectronics.Button.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics.NET Gadgeteer SDK\Modules\Tunes\NETMF 4.3\le\GTM.GHIElectronics.Tunes.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics.NET Gadgeteer SDK\Modules\LED7C\NETMF 4.3\le\GTM.GHIElectronics.LED7C.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\Program Files (x86)\GHI Electronics.NET Gadgeteer SDK\Modules\USBClientDP\NETMF 4.3\le\GTM.GHIElectronics.USBClientDP.dll’
‘Microsoft.SPOT.Debugger.CorDebug.12.dll’ (Managed): Loaded ‘C:\HomebaseV3withNetworking\HomebaseV3\bin\Debug\le\HomebaseV3.exe’, Symbols loaded.
The thread ‘’ (0x2) has exited with code 0 (0x0).
Using mainboard GHI Electronics FEZ Cerberus version 1.3
A first chance exception of type ‘System.Exception’ occurred in GHI.Networking.dll
An unhandled exception of type ‘System.Exception’ occurred in GHI.Networking.dll

WARN: Total initialization time exceeds 10 seconds.
: ProgramStarted is blocking execution, which means events and timers will not run properly.
: Make sure not to use blocking code such as while(true) - use a GT.Timer instead.
Uncaught exception
The thread ‘’ (0x1) has exited with code 0 (0x0).
WARN: Total initialization time exceeds 20 seconds.
: ProgramStarted is blocking execution, which means events and timers will not run properly.
: Make sure not to use blocking code such as while(true) - use a GT.Timer instead.
WARN: Total initialization time exceeds 30 seconds.
: ProgramStarted is blocking execution, which means events and timers will not run properly.
: Make sure not to use blocking code such as while(true) - use a GT.Timer instead.
WARN: Total initialization time exceeds 40 seconds.
: ProgramStarted is blocking execution, which means events and timers will not run properly.
: Make sure not to use blocking code such as while(true) - use a GT.Timer instead.
WARN: Total initialization time exceeds 50 seconds.
: ProgramStarted is blocking execution, which means events and timers will not run properly.
: Make sure not to use blocking code such as while(true) - use a GT.Timer instead.

// here’s the C# code:


using System;
using System.Text;
using System.Collections;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Presentation;
using Microsoft.SPOT.Presentation.Controls;
using Microsoft.SPOT.Presentation.Media;
using Microsoft.SPOT.Touch;

using Microsoft.SPOT.Hardware;
using Gadgeteer.Networking;
using GHIElectronics.Gadgeteer;
using GT = Gadgeteer;
using GTM = Gadgeteer.Modules;
using Gadgeteer.Modules.GHIElectronics;
using Gadgeteer;
using Gadgeteer.Modules.IngenuityMicro;

namespace HomebaseV3
{
    public partial class Program
    {
        private string currentPolledTemp = string.Empty;
        private bool receivedTemp = false;
        
        // This method is run when the mainboard is powered up or reset.   
        void ProgramStarted()
        {
            rfPipe.DataReceived +=rfPipe_DataReceived;
            button.ButtonPressed +=button_ButtonPressed;

            Mainboard.SetDebugLED(false);

            led7C.SetColor(LED7C.Color.Off);
            led7C2.SetColor(LED7C.Color.Off);

            ethernetENC28.NetworkUp += ethernetENC28_NetworkUp;
            ethernetENC28.NetworkDown += ethernetENC28_NetworkDown;

            if (!ethernetENC28.NetworkInterface.Opened)
            {
                ethernetENC28.NetworkInterface.Open();
            }

            ethernetENC28.NetworkInterface.EnableStaticIP("192.168.17.17", "255.255.255.0", "192.168.17.1");

            WebEvent postTemp = WebServer.SetupWebEvent("northtemp");

            postTemp.WebEventReceived += postTemp_WebEventReceived;

            WebServer.StartLocalServer("192.168.17.17", 80);
        }

        void postTemp_WebEventReceived(string path, WebServer.HttpMethod method, Responder responder)
        {
            // web event 
            var uptime = GT.Timer.GetMachineTime();

            if (receivedTemp)
            {
                var HTML =
                    Encoding.UTF8.GetBytes(
                        @ "<head><style type=""text/css"">.style1{width: 100%;}.auto-style1 {text-align: center;}.auto-style2 {font-size: large;}.auto-style3 {text-align: right;}" +
                        @ "</style></head><html><body bgcolor=""33cc33""><p><div class=""auto-style1""><span class=""auto-style2"">Uptime = " +
                        FormatDuration(uptime) +
                        @ "</span><br class=""auto-style2""/></div><table class=""style1""><tr><td class=""auto-style3"">Temp</td><td>&nbsp;</td><td>" +
                        currentPolledTemp + " " +
                        @ "</td></tr></table></body></html>");

                responder.Respond(HTML, "text/html");
            }
            else
            {
                // have not received temperature since bootup
                var HTML =
                    Encoding.UTF8.GetBytes(
                        @ "<head><style type=""text/css"">.style1{width: 100%;}.auto-style1 {text-align: center;}.auto-style2 {font-size: large;}.auto-style3 {text-align: right;}" +
                        @ "</style></head><html><body bgcolor=""33cc33""><p><div class=""auto-style1""><span class=""auto-style2"">Uptime = " +
                        FormatDuration(uptime) +
                        @ "</span><br class=""auto-style2""/></div><table class=""style1""><tr><td class=""auto-style3"">Temp</td><td>&nbsp;</td><td>" +
                        "No Temperature Reading Since Startup" +
                        @ "</td></tr></table></body></html>");

                responder.Respond(HTML, "text/html");
            }    
        }

        void ethernetENC28_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
        {
            Debug.Print("network down");
        }

        void ethernetENC28_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
        {
            Debug.Print("network up");
        }

void button_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
            // when button is pressed - send out a signal to all receivers        
            Mainboard.SetDebugLED(false);  
            
            rfPipe.SendData("fd power poll");
            
            Thread.Sleep(750);

            rfPipe.SendData("sd power poll");

            var melody = new Tunes.Melody();
            melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));        
            tunes.Play(melody);
            
            led7C.SetColor(LED7C.Color.Off);

            // reset polled flag
            receivedTemp = false;

}

void rfPipe_DataReceived(string val)
{

 #region "fd opened"
 	    if (val == "fd opened")
            {
                led7C.SetColor(LED7C.Color.Red);
                led7C2.SetColor(LED7C.Color.Red);


                var melody = new Tunes.Melody();
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));

            tunes.Play(melody);



                Mainboard.SetDebugLED(true);
                Thread.Sleep(30000);

                return;

            } // end if front door opened

 #endregion

 #region "sd opened"

            if (val == "sd opened")
            {
                led7C.SetColor(LED7C.Color.Blue);
                led7C2.SetColor(LED7C.Color.Blue);


                var melody = new Tunes.Melody();
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.C5, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));
                melody.Add(new Tunes.MusicNote(Tunes.Tone.A2, 500));

                tunes.Play(melody);


                Mainboard.SetDebugLED(true);
                Thread.Sleep(30000);

                return;

            } // end if study door opened

 #endregion

 #region "yes fd power"

            if (val == "yes fd power")
            {
                var melody = new Tunes.Melody();
                melody.Add(new Tunes.MusicNote(Tunes.Tone.D4, 500));
                tunes.Play(melody);

            } // end if we receive a front door poll response

 #endregion

 #region "yes sd power"

            if (val == "yes sd power")
            {
                var melody = new Tunes.Melody();
                melody.Add(new Tunes.MusicNote(Tunes.Tone.D4, 500));
                tunes.Play(melody);


            } // end if we receive a front door poll response
 #endregion

 #region "temperature signal received"
            // receives: Temp: 84
            if (val.ToLower().Substring(0,4) == "temp")
            {
                
                // check if the temp was triple digits
                if (val.Length > 8)
                {
                    // temp received, assign value to global
                    currentPolledTemp = val.Substring(7,2);

                    // raise polled flag
                    receivedTemp = true;
                }
                else      // temp was double digits
                {
                    // temp received, assign value to global
                    currentPolledTemp = val.Substring(6,3);
                     
                    // raise polled flag
                    receivedTemp = true;
                }
                
            } // end if we receive a front door poll response
 #endregion


}

         private string FormatDuration(TimeSpan x)
        {
            return x.Days.ToString("D") + ":" + x.Hours.ToString("D2") + ":" + x.Minutes.ToString("D2") + ":" +
                   x.Seconds.ToString("D2");
        }


        
    }
}

@ verbosewater - Can you post the stack trace of the exception? Nothing looks obviously wrong with the code at first glance, so I’d start to remove as much code and as many modules as possible until the exception goes away so we have a minimal example to test here.

@ John - will do, I’ll start with just the main board and Ethernet module and will add one on every time I get a successful deploy.

@ verbosewater - perhaps it helps to remove the references
Microsoft.SPOT.Net.Security
and
System.Net.Security
The Cerberus firmware does not support ssl.

Edit:
Don’t start the Webserver before the Network is up:


// no good style but it works for a first try
while (ethernetENC28.IsNetworkUp == false)
{
         Debug.Print("Waiting...");
         Thread.Sleep(1000);
 }
WebServer.StartLocalServer("192.168.17.17", 80);

Keep in mind that the Gadgeteer webserver has a bug… how to solve…

https://www.ghielectronics.com/downloads/Gadgeteer/NET_Gadgeteer_for_beginners.pdf