private static void IndicatorScannerSerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { var strMessage = mIndicatorScannerSerialPort.ReadString(); if (strMessage == string.Empty || strMessage == null) { return; } Debug.Print("The type of data expected is: " + mMenu.DataRecieved.GetName()); Debug.Print("Data contents recieved from the Serial Port:\r\n" + strMessage); switch (mMenu.DataRecieved) { case RecievedData.ScaleIndicator: var objIndicatorData = new IndicatorData(strMessage); if (objIndicatorData.HasValidDataString) { Debug.Print("Valid Data was sent from the Indicator..."); Settings.NetWeight = objIndicatorData.NetWeight; if (mMenu.MenuSelection == MenuSelection.ViewPieceCount) { mMenu.DisplayInformation(Settings); } else { /*A new thread must be started in order for the WebGet function to work properly; otherwise WebGet(objIndicatorData) would just silently fail... * http://www.codeproject.com/Articles/795829/Multithreading-with-Netduino-and-NET-Microframework * https://www.youtube.com/watch?v=YZOrORB88-s */ var DataRequestThread = new Thread(delegate() { WebGet(objIndicatorData); }); DataRequestThread.Start(); } } break; case RecievedData.ScannerJobAndSuffix: Settings.JobNumber = strMessage; Settings.StoreJobNumber(); mMenu.DataRecieved = RecievedData.None; mMenu.DisplayInformation(Settings); break; case RecievedData.ScannerOperation: Settings.Operation = strMessage; Settings.StoreOperationNumber(); mMenu.DataRecieved = RecievedData.None; mMenu.DisplayInformation(Settings); break; } }