Bluetooth Geliştirici hakkında SSS

Bu makale, sık sorulan WinRT Bluetooth API'sindeki soruların yanıtlarını içerir.

Hangi API'leri kullanırım? Bluetooth Klasik (RFCOMM) veya Bluetooth Düşük Enerji (GATT)?

Bu genel konu hakkında çevrimiçi olarak çeşitli tartışmalar var, bu nedenle bu yanıtı Windows'a göre fark üzerinde tam olarak tutalım. Bazı genel yönergeler şunlardır:

Bluetooth LE (Windows. Devices.Bluetooth.GenericAttributeProfile)

Bluetooth Düşük Enerjiyi destekleyen bir cihazla iletişim kurarken GATT API'lerini kullanın. Kullanım örneğiniz seyrek, düşük bant genişliğine sahipse veya düşük güç gerektiriyorsa, yanıt Bluetooth Düşük Enerji'dir. Bu işlevi içeren ana ad alanı Windows.Devices.Bluetooth.GenericAttributeProfile'dır.

Bluetooth LE kullanılmadığında

  • Yüksek bant genişliği, yüksek frekanslı senaryolar. Sürekli olarak büyük miktarda veriyle eşitlemeyi sürdürmeniz gerekiyorsa, klasik Bluetooth veya hatta WiFi kullanmayı göz önünde bulundurun.

Bluetooth Klasik (Windows.Devices.Bluetooth.Rfcomm)

RFCOMM API'leri geliştiricilere çift yönlü seri bağlantı noktası stili iletişim gerçekleştirmeleri için bir yuva sağlar. Bir soketiniz olduğunda, okuma ve yazma yöntemleri oldukça standarttır. Bunun bir uygulaması Rfcomm Sohbet örneğinde sunulur.

Bluetooth RFCOMM ne zaman kullanılmamalı

  • Bildirimler. Bluetooth GATT protokolü bunun için belirli bir komuta sahiptir ve önemli ölçüde daha az güç çekme ve daha hızlı yanıt sürelerine neden olur.
  • Yakınlık veya varlık algılama kontrol ediliyor. Reklam API'lerini kullanmak ve Bluetooth LE üzerinden bağlanmak daha iyidir.

Bluetooth LE Cihazım bağlantı kesildikten sonra neden yanıt vermiyor?

Bunun en yaygın nedeni, uzak cihazın eşleştirme bilgilerini kaybetmesidir. Çok sayıda eski Bluetooth cihazı kimlik doğrulaması gerektirmez. Kullanıcıyı korumak için, Windows Ayarları'ndan gerçekleştirilen tüm eşleştirme işlemleri için kimlik doğrulaması gerekir ve bazı cihazlar bu amaçla tasarlanmamıştır.

Windows 10 sürüm 1511'den itibaren geliştiriciler eşleştirme el sıkışması üzerinde denetim sahibidir. Cihaz Numaralandırması ve Eşleştirme Örneği, yeni cihazları ilişkilendirmenin çeşitli yönlerini ayrıntılarıyla açıklar.

Bu örnekte şifreleme olmadan bir cihazla eşleştirme işlemi başlatıyoruz. Bunun yalnızca uzak cihazın çalışması için şifreleme veya kimlik doğrulaması gerektirmemesi durumunda işe yarayacağını unutmayın.

// Get ceremony type and protection level selections
// You must select at least ConfirmOnly or the pairing attempt will fail
    DevicePairingKinds ceremonySelected = DevicePairingKinds.ConfirmOnly;

//  Workaround remote devices losing pairing information
    DevicePairingProtectionLevel protectionLevel = DevicePairingProtectionLevel.None

    DeviceInformationCustomPairing customPairing = deviceInfoDisp.DeviceInformation.Pairing.Custom;

// Declare an event handler - you don't need to do much in PairingRequestedHandler since the ceremony is "None"
    customPairing.PairingRequested += PairingRequestedHandler;
    DevicePairingResult result = await customPairing.PairAsync(ceremonySelected, protectionLevel);

Bluetooth cihazlarını kullanmadan önce eşleştirmem gerekiyor mu?

Bluetooth RFCOMM 'dan (klasik) yararlanan cihazları kullanmadan önce eşleştirmeniz gerekmez. Windows 10 sürüm 1607'den itibaren yakındaki cihazları sorgulayabilir ve bunlara bağlanabilirsiniz. Güncelleştirilmiş RFCOMM Sohbet Örneği bu işlevi gösterir.

(14393 ve altı) Bu özellik Bluetooth Düşük Enerji (GATT İstemcisi) için kullanılamaz, bu nedenle bu cihazlara erişmek için Ayarlar sayfasından veya Windows.Devices.Enumeration API'lerini kullanarak eşleştirmeniz gerekir.

(15030 ve üzeri) Bluetooth cihazlarını eşleştirmeye artık gerek yoktur. Uzak cihazın geçerli durumunu sorgulamak için GetGattServicesAsync ve GetCharacteristicsAsync gibi yeni Async API'lerini kullanın. Daha fazla ayrıntı için İstemci belgelerine bakın.

Bir cihazla iletişim kurmadan önce ne zaman eşleştirmem gerekir?

Genel olarak, bir cihazla güvenilir, uzun vadeli bir bağa ihtiyacınız varsa, kullanıcıyı ayarlar sayfasına yönlendirerek veya Cihaz Numaralandırması ve Eşleştirme API'lerini kullanarak cihazla eşleştirin. Genel kullanıma sunulan cihazdan (sıcaklık sensörü veya işaret) bilgi okumanız gerekiyorsa, cihazla eşleştirmek için herhangi bir çaba harcamadan reklamları bağlayın veya dinleyin. Bu, çok sayıda cihaz eşleştirmeyi desteklemediğinden uzun vadede birlikte çalışabilirlik sorunlarını önler.

Tüm Windows cihazları çevresel aygıt rolünü destekler mi?

Hayır. Bu donanıma bağımlı bir özelliktir, ancak desteklenip desteklenmediğini sorgulamak için BluetoothAdapter.IsPeripheralRoleSupported adlı bir yöntem sağlanır. Şu anda desteklenen cihazlar arasında 8992+ üzerindeki Windows Phone ve RPi3 (Windows IoT) bulunur.

Bu API'lere Win32'den erişebilir miyim?

Evet, tüm bu API'ler çalışmalıdır. Bu blog, Masaüstü uygulamalarından Windows API'lerini çağırmanın yolunu açıklar.

Bu işlevin belirli bir SKU'da mevcut olması gerekiyor mu?

Bluetooth LE: Evet, tüm işlevler OneCore'dadır ve işlevli bir Bluetooth LE yığını olan en son cihazlarda kullanılabilir olmalıdır.

Uyarı: Çevre Birimi Rolü donanıma bağımlıdır ve bazı Windows Server Sürümleri Bluetooth'u desteklemez.

Bluetooth BR/EDR (Klasik): Bazı varyasyonlar vardır ancak çoğunlukla çok benzer profil düzeyi desteğine sahiptir. RFCOMM'da belgelere ve pc için desteklenen bu profil belgesine bakın