FAQ Pengembang Bluetooth

Artikel ini berisi jawaban atas pertanyaan UWP Bluetooth API yang umum diajukan.

API apa yang saya gunakan? Bluetooth Classic (RFCOMM) atau Bluetooth Low Energy (GATT)?

Ada berbagai diskusi online di sekitar topik umum ini jadi mari kita pertahankan jawaban ini dengan tepat pada perbedaan sehubungan dengan Windows. Berikut adalah beberapa panduan umum:

Bluetooth LE (Windows.Devices.Bluetooth.GenericAttributeProfile)

Gunakan API GATT saat Anda berkomunikasi dengan perangkat yang mendukung Bluetooth Low Energy. Jika kasus penggunaan Anda jarang terjadi, bandwidth rendah, atau membutuhkan daya rendah, Bluetooth Low Energy adalah jawabannya. Namespace utama yang menyertakan fungsi ini adalah Windows.Devices.Bluetooth.GenericAttributeProfile.

Kapan tidak menggunakan Bluetooth LE

  • Bandwidth tinggi, skenario frekuensi tinggi. Jika Anda perlu terus menyinkronkan dengan data dalam jumlah besar, pertimbangkan untuk menggunakan Bluetooth klasik atau bahkan mungkin WiFi.

Bluetooth Classic (Windows.Devices.Bluetooth.Rfcomm)

API RFCOMM memberi pengembang soket untuk melakukan komunikasi gaya port serial dua arah. Setelah Anda memiliki soket, metode untuk menulis dan membaca cukup standar. Implementasi ini disajikan dalam sampel Obrolan Rfcomm.

Kapan tidak menggunakan Bluetooth Rfcomm

  • Pemberitahuan. Protokol BLUETOOTH GATT memiliki perintah khusus untuk ini dan akan menghasilkan daya undian yang jauh lebih sedikit dan waktu respons yang lebih cepat.
  • Memeriksa kedekatan atau deteksi kehadiran. Lebih baik menggunakan API Iklan dan terhubung melalui Bluetooth LE.

Mengapa Perangkat LE Bluetooth saya berhenti merespons setelah sambungan terputus?

Alasan paling umum ini terjadi adalah karena perangkat jarak jauh telah kehilangan informasi pemasangan. Sejumlah besar perangkat Bluetooth yang lebih lama tidak memerlukan autentikasi. Untuk melindungi pengguna, semua transaksi pemasangan yang dilakukan dari aplikasi Pengaturan akan memerlukan autentikasi, dan beberapa perangkat tidak dirancang dengan mempertimbangkan ini.

Dimulai dengan rilis Windows 10 1511, pengembang memiliki kontrol atas jabat tangan pemasangan. Sampel Enumerasi dan Pemasangan Perangkat merinci berbagai aspek mengaitkan perangkat baru.

Dalam contoh ini, kami memulai pemasangan dengan perangkat tanpa enkripsi. Perhatikan, ini hanya akan berfungsi jika perangkat jarak jauh tidak memerlukan enkripsi atau autentikasi untuk berfungsi.

// 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);

Apakah saya harus memasangkan perangkat Bluetooth sebelum menggunakannya?

Anda tidak perlu memasangkan perangkat sebelum menggunakannya jika memanfaatkan Bluetooth RFCOMM (klasik). Dimulai dengan rilis Windows 10 1607, Anda cukup membuat kueri untuk perangkat terdekat dan menyambungkannya. Sampel Obrolan RFCOMM yang diperbarui menunjukkan fungsionalitas ini.

(14393 ke bawah) Fitur ini tidak tersedia untuk Bluetooth Low Energy (Gatt Client), jadi Anda masih harus memasangkan baik melalui halaman Pengaturan atau menggunakan WINDOWS.Devices.Enumeration API untuk mengakses perangkat ini.

(15030 ke atas) Memasangkan perangkat Bluetooth tidak lagi diperlukan. Gunakan API Asinkron baru seperti GetGattServicesAsync dan GetCharacteristicsAsync untuk mengkueri status perangkat jarak jauh saat ini. Lihat Dokumen klien untuk detail selengkapnya.

Kapan saya harus memasangkan dengan perangkat sebelum berkomunikasi dengannya?

Umumnya, jika Anda memerlukan ikatan jangka panjang tepercaya dengan perangkat, pasangkan dengannya dengan mengarahkan pengguna ke halaman pengaturan atau menggunakan API Enumerasi dan Pemasangan Perangkat. Jika Anda hanya perlu membaca informasi dari perangkat yang terekspos secara publik (sensor suhu atau suar), maka sambungkan atau dengarkan iklan tanpa melakukan upaya apa pun untuk dipasangkan dengan perangkat. Ini akan mencegah masalah interoperabilitas dalam jangka panjang, karena sejumlah besar perangkat tidak mendukung pemasangan.

Apakah semua perangkat Windows mendukung Peran Periferal?

Nomor. Ini adalah fitur yang bergantung pada perangkat keras, tetapi metode disediakan, BluetoothAdapter.IsPeripheralRoleSupported, untuk meminta apakah itu didukung atau tidak. Perangkat yang saat ini didukung termasuk Windows Phone pada 8992+ dan RPi3 (Windows IoT).

Dapatkah saya mengakses API ini dari Win32?

Ya, semua API ini harus berfungsi. Blog ini merinci cara memanggil API Windows dari aplikasi Desktop.

Apakah fungsi ini seharusnya ada pada SKU tertentu?

Bluetooth LE: Ya, semua fungsionalitas dalam OneCore dan harus tersedia di perangkat terbaru dengan tumpukan LE Bluetooth yang berfungsi.

Peringatan: Peran Periferal bergantung pada perangkat keras dan beberapa Edisi Windows Server tidak mendukung Bluetooth.

Bluetooth BR/EDR (Klasik): Beberapa variasi ada tetapi sebagian besar, mereka memiliki dukungan tingkat profil yang sangat mirip. Lihat dokumen di RFCOMM dan dokumen profil yang didukung ini untuk PC dan Telepon