3

Я пытался найти способы найти и подключить Arduino через Bluetooth через приложение UWP, поэтому с большим количеством пустяков я нашел два пути (к сожалению, не смог найти официальную документацию MS по этому поводу) Так один методWindows 10 UWP Bluetooth-соединение с Arduino

  DeviceInformationCollection availableDevices = await BluetoothSerial.listAvailableDevicesAsync(); 
     foreach (DeviceInformation device in availableDevices) 
     { 
      deviceList.Add(device); 

     } 

Это возвращает устройство Bluetooth под названием «Dev B», и это на самом деле модуль Bluetooth моего Arduino в. Несмотря на то, что есть другие доступные устройства, парные/непарные, этот метод всегда возвращает только «Dev B».

И тогда я использовать эту функцию, чтобы соединиться с Arduino

  var selectedDevice = (DeviceInformation)DeviceListView.SelectedItem; 
     uint BaudRate = 9600; 
     var connection = new BluetoothSerial(selectedDevice.Name); 
     arduino = new RemoteDevice(connection); 
     connection.begin(BaudRate, SerialConfig.SERIAL_8N1); 
     connection.ConnectionEstablished += OnConnectionEstablished; 

     ConnectedDeviceTextBox.Text = "Connected with Arduino."; 

И это прекрасно работает и подключается. И все хорошо до сих пор

так, потому что мне нужно было найти все блютус устройства доступны я нашел следующий метод

  var selector = BluetoothDevice.GetDeviceSelectorFromPairingState(true); 
     var devices = await DeviceInformation.FindAllAsync(selector); 
     foreach (DeviceInformation device in devices) 
     { 
      deviceList.Add(device); 
     } 

Это дает мне все спаренные устройства Bluetooth, а имя модуля Bluetooth теперь HC -05 (На самом деле это имя, которое окна показывают в настройках Bluetooth и везде). Но если я передаю эту информацию об устройстве в код подключения выше, она не будет подключаться. Я попытался с помощью имени устройства в

var connection = new BluetoothSerial(selectedDevice.Name); 

, но он не работает, я также пытался переходящая в самом устройстве

var connection = new BluetoothSerial(selectedDevice); 

еще не повезло.

Может кто-нибудь объяснить объяснение имени и почему его не соединяется со вторым методом. Заранее спасибо.

ответ

2

Первый api BluetoothSerial фактически работает на устройстве RFCOMM Bluetooth. Вы можете найти его реализацию here.

Второй api BluetoothDevice фактически работает на классическом устройстве Bluetooth, таком как Bluetooth-гарнитура.

Они реализованы по разному протоколу Bluetooth и соответственно принадлежат Windows.Devices.Bluetooth.Rfcomm и Windows.Devices.Bluetooth пространствам имен в Windows Runtime.

Исходя из вышеуказанной причины, вы передаете BluetoothDevice в интерфейс BluetoothSerial и получаете отказ, это разумно.

Что касается имени устройства, я думаю, поскольку он имеет разные представления в результатах вызова двух типов устройств api, поэтому они несовместимы.

+0

Thank You Rita, Получил ваш момент относительно разницы между классом Rfcomm и BluetoothDevice. Что касается имени, то я попробовал изменить имя модуля HC-05 Bluetooth, обновленный везде, кроме моего приложения, где он по-прежнему показывает Dev B первым методом. Я буду продолжать изучать это и обновлять поток, если найду что-нибудь. –

 Смежные вопросы

  • Нет связанных вопросов^_^