I found the problem. in the sample code at http://www.tinyclr.com/codeshare/entry/588 the EnableDHCP bit ( line 30 which is commented out for static IP addresses) is several lines above the wiring of the event for Eth1.NetworkAddressChanged . The address is getting changed faster than the Event is wired up so it never fires.
Here is what I Have and it works for a dynamic (DHCP) address.
using Microsoft.SPOT;
using GHI.Premium.Net;
namespace SpiderEthernetTest
{
public class Program
{
static readonly EthernetBuiltIn Ethernet = new EthernetBuiltIn();
public static void Main()
{
//Spider BuiltInEthernet needs to be open.
Ethernet.Open();
//Subscribe to AddressChanged
Ethernet.NetworkAddressChanged += new NetworkInterfaceExtension.NetworkAddressChangedEventHandler(Eth1_NetworkAddressChanged);
//enable the Dhcp
Ethernet.NetworkInterface.EnableDhcp();
}
static void Eth1_NetworkAddressChanged(object sender, EventArgs e)
{
Debug.Print("New address for The built-in Ethernet Network Interface ");
Debug.Print("Is DhCp enabled: " + Ethernet.NetworkInterface.IsDhcpEnabled);
Debug.Print("Is DynamicDnsEnabled enabled: " + Ethernet.NetworkInterface.IsDynamicDnsEnabled);
Debug.Print("NetworkInterfaceType " + Ethernet.NetworkInterface.NetworkInterfaceType);
Debug.Print("Network settings:");
Debug.Print("IP Address: " + Ethernet.NetworkInterface.IPAddress);
Debug.Print("Subnet Mask: " + Ethernet.NetworkInterface.SubnetMask);
Debug.Print("Default Getway: " + Ethernet.NetworkInterface.GatewayAddress);
Debug.Print("Number of DNS servers:" + Ethernet.NetworkInterface.DnsAddresses.Length);
for (int i = 0; i < Ethernet.NetworkInterface.DnsAddresses.Length; i++)
Debug.Print("DNS Server " + i.ToString() + ":" + Ethernet.NetworkInterface.DnsAddresses[i]);
Debug.Print("------------------------------------------------------");
}
}
}