private void ConnectButton_Clicked(object sender, EventArgs e) { SetUIEnabled(false); string device = ""; if (DevicePicker.SelectedItem != null) { device = DevicePicker.SelectedItem as string; } else if ((ConnectionMethodPicker.SelectedItem as string) != "Network") { ConnectMessage.Text = "You must select an item to proceed."; SetUIEnabled(true); return; } uint baudRate = Convert.ToUInt32((BaudRatePicker.SelectedItem as string)); arduino.DeviceReady += OnDeviceReady; arduino.DeviceConnectionFailed += OnConnectionFailed; switch (ConnectionMethodPicker.SelectedItem as string) { default: case "Bluetooth": arduino.Connect("Bluetooth", device, baudRate); break; case "USB": arduino.Connect("USB", device, baudRate); break; case "DfRobot": arduino.Connect("DfRobot", device, baudRate); break; case "Network": string host = NetworkHostNameEntry.Text; string port = NetworkPortEntry.Text; ushort portnum = 0; if (Uri.CheckHostName(host) == UriHostNameType.Unknown) { ConnectMessage.Text = "You have entered an invalid host or IP."; return; } if (!ushort.TryParse(port, out portnum)) { ConnectMessage.Text = "You have entered an invalid port number."; return; } arduino.Connect(host, portnum, baudRate); break; } timerShouldRun = true; Device.StartTimer(TimeSpan.FromSeconds(30), () => { if (timerShouldRun) { Connection_TimeOut(); } return(false); }); }