private void btDalej_Click(object sender, EventArgs e) { BluetoothDeviceInfo bdi = (BluetoothDeviceInfo)lbDevices.SelectedValue; bool has_serial_port = false; string serial_port = string.Empty; Guid[] services = bdi.InstalledServices; foreach (Guid serv in services) { if (serv == BluetoothService.SerialPort) { has_serial_port = true; serial_port = GPSConfig.GetBluetoothPortName(bdi.DeviceAddress); break; } } using (GPSBluetoothSerialPortForm portform = new GPSBluetoothSerialPortForm(has_serial_port, serial_port)) { portform.Owner = this; if (portform.ShowDialog() == DialogResult.OK) { Application.DoEvents(); Cursor.Current = Cursors.WaitCursor; string SelectedPort = (string)portform.cbPortName.SelectedItem; string PinValue = (string)portform.tbPin.Text; int SelectedBaudRate = (int)portform.cbBaud.SelectedItem; // 1. setup selected COM port for bluetooth device if (bdi.Authenticated == false) { bool ret = BluetoothSecurity.PairRequest(bdi.DeviceAddress, PinValue); if (ret == false) { Cursor.Current = Cursors.Default; MessageBox.Show("Connection to selected bluetooth device failed. If your GPS receiver was turned off, turn it on and try again, or try other device"); return; } } if (GPSConfig.SetBluetoothPortName(bdi.DeviceAddress, SelectedPort) == false) { Cursor.Current = Cursors.Default; MessageBox.Show("Failed to open selected COM port. Choose other COM port or restart your phone and try again"); return; } // 2. set selected COM port as GPS Intermediate Driver Hardware port IntermediateDriver.SetExternalInPort(SelectedPort); IntermediateDriver.SetExternalInPortBaudRate(SelectedBaudRate); string GPSIDOutPort = IntermediateDriver.GetOutPort(); if (GPSIDOutPort == null || GPSIDOutPort.Length == 0) { // there is no software COM port set in GPS Intermediate Driver // choose first free COM port GPSIDOutPort = GPSConfig.GetFreeGPSIDPort(); if (GPSIDOutPort == null || GPSIDOutPort.Length == 0) { MessageBox.Show("Can't find free COM port. GPS configuration failed", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); Cursor.Current = Cursors.Default; DialogResult = DialogResult.Cancel; Close(); } IntermediateDriver.SetOutPort(GPSIDOutPort); } IntermediateDriver.EnableIntermediateDriver(); IntermediateDriver.Update(); // 3. save configuration settings Program.cfg.GPSPortName = IntermediateDriver.GetOutPort(); Program.cfg.GPSBaudRate = SelectedBaudRate; Cursor.Current = Cursors.Default; DialogResult = DialogResult.OK; Close(); } } }