Контекст следующий: у нас есть несколько грузовиков, которые содержат bluetooth для последовательного устройства, мы дали каждому грузовику bluetooth уникальное имя, чтобы иметь возможность подключиться к конкретному грузовику.Извлечь имя устройства bluetooth из услуг устройства rfcomm
Я использую этот код, чтобы получить все RFCOMM услуги:
DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort))
Проблема заключается в том, что все объекты DeviceInformation вернулся содержит имя службы RFCOMM имя свойства вместо имени устройства Bluetooth. Когда мой проект был приложением для магазина Win 8, все было в порядке, так как свойство name содержало имя устройства Bluetooth.
Я обнаружил, что могу создать объект BluetoothDevice, используя идентификатор устройства, возвращенный вышеуказанным кодом, но затем приложение попросит использовать устройство Bluetooth для всех устройств, пока не найду подходящее. Я хотел бы предотвратить это, поскольку это не относится к приложению Win 8 store.
Второе решение, которое я нашел, было разобрать идентификатор устройства службы RFCOMM которые выглядят как этот
Bluetooth#Bluetooth00:c2:c6:56:b0:61-00:15:be:0f:02:d7#RFCOMM:00000000:{00001101-0000-1000-8000-00805f9b34fb}
удалить все прошлое «#RFCOMM» и использовать функцию DeviceInformation.CreateFromIdAsync()
. Это работает, но мне было интересно, было ли более чистое решение для моей проблемы, поскольку синтаксический анализ строки может быть реальной проблемой при изменении формата строки.
Есть ли способ получить имя устройства Bluetooth без необходимости запрашивать все Bluetooth-устройства, пока мы его не найдем?
Да, это сработало, я отметил ваш ответ как принятый. спасибо –