Here is the rest of the Device Code. 2 more classes 4 total:
Program.cs
using System;
using Microsoft.SPOT;
using Microsoft.SPOT.Net.NetworkInformation;
using GHIElectronics.NETMF.Net;
using GHIElectronics.NETMF.Hardware;
namespace ChipworkX_Application1
{
public class Program
{
private static SystemManager mSysMgr;
public static void Main()
{
EnableEnet();
ConfigureEnet();
mSysMgr = new SystemManager();
mSysMgr.Start();
System.Threading.Thread.Sleep(-1);
}
public static NetworkInterface EnetSettings;
public static byte[] MAC_Address = new byte[] { 0x00, 0x21, 0x03, 0x80, 0x34, 0x0D };
public static string Gateway = "0.0.0.0";
public static string[] DNS_Entries = new string[] { "0.0.0.0", "0.0.0.0" };
public static string StationIPAdrs = "192.168.0.201";
public static string StationSubnet = "255.255.255.0";
public static void ConfigureEnet()
{
if (EnetSettings != null)
{
// Store MAC
Array.Clear(EnetSettings.PhysicalAddress, 0, EnetSettings.PhysicalAddress.Length);
Array.Copy(MAC_Address, EnetSettings.PhysicalAddress, MAC_Address.Length);
// Store IP
EnetSettings.EnableStaticIP(StationIPAdrs, StationSubnet, Gateway);
Debug.Print("Setting:\n\t IP: " + StationIPAdrs + "\n\tSUB: " + StationSubnet + "\n\tGWY: " + Gateway);
// Store DNS
EnetSettings.EnableStaticDns(DNS_Entries);
Debug.Print("Setting:\n\tDNS1: " + DNS_Entries[0].ToString() + "\n\tDNS2: " + DNS_Entries[1].ToString());
}
}
public static void EnableEnet()
{
Debug.Print("Ethernet Enabled: " + GHIElectronics.NETMF.Net.Ethernet.IsEnabled.ToString());
if (!Ethernet.IsEnabled)
{
// Switch to Ethernet interface
Ethernet.Enable();
}
Debug.Print("Ethernet Enabled - Retrieving Interface...");
// Get Enet Interface
NetworkInterface[] Interfaces = NetworkInterface.GetAllNetworkInterfaces();
for (int index = 0; index < Interfaces.Length; ++index)
{
if (!(Interfaces[index] is Wireless80211))
{
EnetSettings = Interfaces[index];
break;
}
}
}
}
}
SystemManager.cs
using System;
using Microsoft.SPOT;
using System.Threading;
namespace ChipworkX_Application1
{
class SystemManager
{
private Thread mSerialThread;
private Thread mSocketThread;
private SerialDriver mSerial;
private SocketDriver mSocket;
public void Start()
{
mSocket = new SocketDriver();
mSerial = new SerialDriver();
mSerialThread = new Thread(mSerial.ThreadMain);
mSerialThread.Start();
mSocketThread = new Thread(mSocket.ThreadMain);
mSocketThread.Start();
}
}
}
Desktop Code: Simple VB Form App with 1 button
Imports System.IO.Ports
Imports System.Net.Sockets
Public Class Form1
Private mSerialPort As SerialPort
Private mTCPListener As TcpListener
Private mClient As TcpClient
Protected Overrides Sub OnLoad(e As System.EventArgs)
MyBase.OnLoad(e)
mSerialPort = New SerialPort("COM1", 115200, Parity.None, 8, StopBits.One)
AddHandler mSerialPort.DataReceived, AddressOf mSerialPort_DataReceived
AddHandler mSerialPort.ErrorReceived, AddressOf mSerialPort_ErrorReceived
mSerialPort.Open()
mTCPListener = New TcpListener(System.Net.IPAddress.Any, 14220)
mTCPListener.Start()
mTCPListener.BeginAcceptTcpClient(New AsyncCallback(AddressOf AcceptTCPClient), mTCPListener)
End Sub
Protected Overrides Sub OnFormClosing(e As System.Windows.Forms.FormClosingEventArgs)
MyBase.OnFormClosing(e)
If mSerialPort IsNot Nothing Then
mSerialPort.Close()
mSerialPort.Dispose()
End If
If mTCPListener IsNot Nothing Then
mTCPListener.Stop()
End If
End Sub
Private Sub AcceptTCPClient(ar As IAsyncResult)
Dim Listener As TcpListener = CType(ar.AsyncState, TcpListener)
mClient = Listener.EndAcceptTcpClient(ar)
Console.WriteLine("Client Connected: " & mClient.Client.LocalEndPoint.ToString())
End Sub
Private Sub mSerialPort_ErrorReceived(sender As Object, e As SerialErrorReceivedEventArgs)
Debug.Print("{0} - Serial Port Error: {1}", Now.ToString(), e.EventType)
End Sub
Private Sub mSerialPort_DataReceived(sender As Object, e As SerialDataReceivedEventArgs)
Try
Dim BytesToRead As Integer = mSerialPort.BytesToRead
If BytesToRead > 0 Then
Dim Buffer(BytesToRead - 1) As Byte
mSerialPort.Read(Buffer, 0, BytesToRead)
ProcessRxData(Buffer, BytesToRead)
End If
Catch ex As Exception
Debug.Print("Exception in mSerialPort_DataReceived: {0}", ex)
End Try
End Sub
Private Sub ProcessRxData(Data As Byte(), Count As Integer)
Debug.Print("{0} - Processing Data: ({1})", Now.ToString, Count)
If (Count > 0) Then
mSerialPort.Write(Data, 0, Data.Length)
Else
End If
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
mSerialPort.Write("12345678901234567890123456789012345678901234567890")
End Sub
End Class