private void SocketIO_ProcessMessage(object sender, SocketIOArgs data)
        {
            if (EmIO_Manager == null)//Not connected to Em
            {
                SocketIO_Client.Write(data.GetSocketCommandString(data.Command + 2));
                return;
            }
            else if (!EmIO_Manager.IsSynced)//Not ready for IO updates.
            {
                SocketIO_Client.Write(data.GetSocketCommandString(data.Command + 2));
                return;
            }

            if (!SocketIO_InSync)
            {
                SocketIO_InSync = true;
                this.Queue(false, new Action(() => SocketIO_InSyncEvent?.Invoke(this, true)));
            }

            switch (data.Command)
            {
            case 1:     //Write Outputs
                this.Queue(false, new Action(() => SocketIO_UpdateEmInputsEvent?.Invoke(data)));
                break;

            case 10:     //Read Inputs
                this.Queue(false, new Action(() => SocketIO_UpdateEmOutputsEvent?.Invoke()));
                break;
            }
        }
        private void ARCLManager_SocketComms_SocketIO_UpdateEmInputsEvent(SocketIOArgs data)
        {
            for (int i = 1; i <= EmIO_Manager.ActiveSets.Count(); i++)
            {
                EmIO_Manager.ActiveSets[i.ToString()].Inputs = new List <byte>()
                {
                    data.IO[i - 1]
                }
            }
            ;

            while (WaitingForOutputUpdate)
            {
            }

            WaitingForInputUpdate = EmIO_Manager.WriteAllInputs();
        }