Get bluetooth comport name

Viewed 1284

Is there any way to enumerate all the bluetooth com ports and get their names? And by name i don't mean COM10, in this case i mean GNSS:51622 'GNSS Server'.

bluetooth dialog

Using 32Feet i have been able to find the names of the ports, but still no luck mapping them to the actual com port.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Connecting to Bluetooth");
        var client = new BluetoothClient();
        Console.WriteLine("DiscoverDevices");
        var devices = client.DiscoverDevices();
        Console.WriteLine("Enumerating");
        foreach (var device in devices)
        {
            if (!device.DeviceName.StartsWith("GNSS"))
                continue;
            Console.WriteLine(device.DeviceName);
            try
            {
                Console.WriteLine("Getting serial ports");
                var serviceRecords = device.GetServiceRecords(BluetoothService.SerialPort);
                foreach (var serviceRecord in serviceRecords)
                {
                    var name = GetName(serviceRecord);
                    Console.WriteLine(name);
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed to get SerialPort");
                Console.WriteLine(ex.ToString());
            }
        }
        Console.ReadKey();
    }

    private static string GetName(ServiceRecord serviceRecord)
    {
        var nameAttribute = serviceRecord.SingleOrDefault(a => a.Id == 0);
        var name = serviceRecord.GetPrimaryMultiLanguageStringAttributeById(nameAttribute.Id);
        return name;
    }
}

Output:

Connecting to Bluetooth DiscoverDevices Enumerating GNSS:51622 Getting serial ports COM1 COM2 COM3 GNSS Server

1 Answers
Related