2015-11-20 23 views
7

Trước đây tôi đã ghép nối với thiết bị Bluetooth hỗ trợ RFCOMM. Khi ứng dụng của tôi được mở, tôi liên tục cố kết nối với thiết bị bằng cách mở RFCOMM. Bằng cách này, ứng dụng của tôi sẽ tự động kết nối khi thiết bị có trong phạm vi phủ sóng.Windows 10 - cách phát hiện khi thiết bị Bluetooth nằm trong phạm vi

deviceInfoCollection = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort)); 
     LogData(String.Format("Number of mldp devices is {0}", deviceInfoCollection.Count)); 
     foreach (DeviceInformation deviceInfo in deviceInfoCollection) 
     { 
      LogData(String.Format("ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name)); 
     } 

Sau đó chạy trên một bộ đếm thời gian:

try 
      { 
       // The first time this method is invoked by a store app, it should be called 
       // from a UI thread in order to display the consent prompt 
       // https://msdn.microsoft.com/en-us/windows.devices.bluetooth.rfcomm.rfcommdeviceservice.fromidasync 
       RfcommDeviceService rfcommService = await RfcommDeviceService.FromIdAsync(deviceInfo.Id); 
       LogData(String.Format("ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name)); 
      } 
      catch (Exception) 
      { 
       LogData(String.Format("Can not request rfcomm service from device ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name)); 
      } 

Có cách nào để truy vấn khi thiết bị nằm trong phạm vi, chứ không phải cố gắng để kết nối? Tôi chỉ muốn thử kết nối khi thiết bị ở trong phạm vi phủ sóng.

Trả lời

2

Đối RFCOMM (BT2.0, BT2.1), bạn có thể chạy một thiết bị liệt kê theo định kỳ, xem thêm Get bluetooth devices in range

Tuy nhiên thực hiện thực tế của bạn với một nỗ lực kết nối có thể làm việc tốt hơn một chút.

Đối với Bluetooth 4.0, bạn có thể nghe các quảng cáo của các mô-đun BT, xem thêm https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BluetoothAdvertisement

Nếu bạn đang nói chuyện với một thiết bị nhúng (ví dụ như một số robot, hay các thiết bị sử dụng homebrew RFCOMM) Tôi sợ có không phải là giải pháp tốt hơn so với những gì bạn đang làm.

Nếu bạn đang dùng điện thoại (hỗ trợ cả BT4.0 và BT2.1), bạn có thể sử dụng quảng cáo BT4 để báo hiệu khoảng cách của thiết bị, sau đó kết nối qua RFCOMM.

Các vấn đề liên quan