تسمح Web Bluetooth API وWeb Serial API لتطبيقات الويب بالاتصال بأجهزة البلوتوث المنخفض الطاقة (BLE) والأجهزة التسلسلية على التوالي. على الرغم من أنّ العديد من مطوّري الويب يستخدمون حاليًا واجهات برمجة التطبيقات هذه لتحقيق نجاح كبير، هناك طلب متزايد على توفير الدعم لأجهزة Bluetooth Classic أيضًا.
أما الآن، تتيح Web Serial API التواصل مع خدمات RFCOMM على الأجهزة المقترنة التي تعمل بتقنية البلوتوث الكلاسيكية، بما في ذلك ملف تعريف المنفذ التسلسلي (SPP) في الإصدار Chrome 117 على أجهزة الكمبيوتر المكتبي. وهذا يفتح فرصًا جديدة للمطورين على الويب والمستخدمين على حد سواء. في ما يلي بعض أجهزة الواقع الفعلي التي يمكنها الاستفادة من هذه الميزة:
- تستخدم سمّاعات Pixel Buds Pro وغيرها من سمّاعات الأذن اللاسلكية معيار RFCOMM لإدارة إعدادات الصوت وتحديثات البرامج الثابتة.
- تستخدم أنظمة نقاط البيع المتنقلة بروتوكول SPP عبر البلوتوث للاتصال بطابعات الإيصالات.
- تستخدم أجهزة قراءة علامات RFID للماشية بروتوكول SPP عبر البلوتوث لتسجيل حركات الحيوانات.
بروتوكول RFCOMM للبلوتوث
انطلِق في رحلة إلى أواخر التسعينات. ما عليك سوى وضع جهاز Palm Flight في قاعدة الإرساء من أجل مزامنة تقويمك لليوم التالي. ألن يكون من الأفضل إجراء ذلك لاسلكيًا بدلاً من ذلك؟ بفضل تقنية "البلوتوث" الجديدة هذه، يمكنك التخلص من جميع هذه الأسلاك الفوضوية. الشبكات اللاسلكية هي المستقبل! هناك مشكلة واحدة فقط، وهي أن كل العناصر الموجودة قد تم تصميمها للاتصال بكابل RS-232. إذًا، يستخدم البلوتوث بروتوكول الاتصالات بالترددات اللاسلكية (RFCOMM) لتوفير هذه الواجهة لجميع البرامج والأجهزة الحالية.
وحتى اليوم، يتم استخدام خدمات RFCOMM على نطاق واسع في الأجهزة الجديدة والحالية. يتيح هذا الخيار تلبية متطلبات محددة لوقت الاستجابة ومعدل نقل البيانات لا يتم استيفاؤها باستخدام تقنية البلوتوث المنخفضة الطاقة حتى الآن. ولهذا السبب، طوّرنا عملية دمج بين Web Serial، وهي واجهة برمجة تطبيقات للاتصال بالأجهزة التسلسلية والبلوتوث، لتفعيل الوصول إلى خدمات RFCOMM القديمة هذه قبل انتقال الشركات المصنّعة في النهاية إلى تقنية Bluetooth Low Energy ويمكن للمطوّرين استخدام Web Bluetooth API بدلاً من ذلك.
التغييرات على Web Serial API
بدءًا من Chrome 117 على أجهزة الكمبيوتر المكتبي، يمكن الآن لمطوّري البرامج على الويب التواصل بشكل موثوق مع الأجهزة المزوّدة بالبلوتوث الكلاسيكي من خلال خدمات RFCOMM باستخدام واجهة برمجة التطبيقات Web Serial API. وقد تمت إتاحة ذلك من خلال التعديلات التالية على Web Serial API:
- يعدد Chrome الآن أجهزة البلوتوث المقترنة التي تعرض واجهة تسلسلية باستخدام الملف الشخصي الموحّد للمنفذ التسلسلي الكلاسيكي للبلوتوث.
- يمكن لمتصفّح Chrome الآن الاتصال بالواجهة التسلسلية حتى إذا لم ينشئ نظام التشغيل عقدة جهاز من خلال منفذ تسلسلي محاكي تحديدًا.
- يمكن لمتصفّح Chrome الآن الاتصال بخدمة غير ذات منافذ تسلسلية تعرض واجهة تسلسلية لبروتوكول RFCOMM (يمكنك الاطّلاع على معرّفات فئة الخدمة غير العادية).
يمكنك التعرّف على كيفية استخدام Web Serial API في مقالة القراءة من منفذ تسلسلي والكتابة إليه. تفترض هذه المقالة أن لديك معرفة أساسية بالبلوتوث وتركز على الرقم التسلسلي بدلاً من تغييرات البلوتوث.
بدون تحديد أي فلاتر، يتيح طلب navigator.serial.requestPort()
للمستخدمين اختيار المنافذ التسلسلية التي لا تستند إلى بلوتوث، ومنافذ البلوتوث التسلسلية التي تم ربطها من قبل، وأي منافذ تسلسلية غير معيّنة يوفّرها الملف الشخصي الموحّد للمنفذ التسلسلي الكلاسيكي في البلوتوث.
// Prompt user to select any serial port.
const port = await navigator.serial.requestPort();
وعلى الرغم من أنّ معظم الأجهزة تعرض الاتصال المستند إلى بروتوكول SPP من خلال الملف الشخصي الموحّد للمنفذ التسلسلي الكلاسيكي للبلوتوث، يستخدم بعضها خدمات مخصَّصة مستندة إلى بروتوكول RFCOMM. تحتوي هذه الأجهزة على معرّف فئة خدمة لا يندرج ضمن نطاق المعرّف الفريد العالمي للبلوتوث العادي.
يجب تمرير قائمة allowedBluetoothServiceClassIds
إلى navigator.serial.requestPort()
للوصول إلى هذه الخدمات المخصَّصة المستندة إلى RFCOMM كما هو موضّح في المثال أدناه.
const myBluetoothServiceUuid = "01234567-89ab-cdef-0123-456789abcdef";
// Prompt user to select any serial port.
// Access to the custom Bluetooth RFCOMM service above will be allowed.
const port = await navigator.serial.requestPort({
allowedBluetoothServiceClassIds: [myBluetoothServiceUuid],
});
تجدر الإشارة إلى أنّه يتم حظر جميع معرّفات فئات الخدمة التي تستخدم المعرّف الفريد العالمي الفريد (UUID) لـ Bluetooth SIG Base (أي جميع أرقام UUID التي تنتهي بـ " -0000-1000-8000-00805f9b34fb") باستثناء معرّف الملف الشخصي للمنفذ التسلسلي، لأنّ Chrome لا يتوافق مع خدمات البلوتوث الكلاسيكية، مثل الصوت والفيديو.
يمكنك أيضًا استخدام bluetoothServiceClassId
مفتاح الفلتر عند طلب البيانات navigator.serial.requestPort()
لطلب من المستخدم إرسال قائمة بمنافذ البلوتوث التسلسلية التي تمّت فلترتها والمحددة من خلال أرقام تعريف فئة الخدمة. انظر المثال أدناه.
const myBluetoothServiceUuid = "01234567-89ab-cdef-0123-456789abcdef";
// Prompt the user to select Bluetooth serial ports with
// the custom Bluetooth RFCOMM service above.
const port = await navigator.serial.requestPort({
allowedBluetoothServiceClassIds: [myBluetoothServiceUuid],
filters: [{ bluetoothServiceClassId: myBluetoothServiceUuid }],
});
إذا كان المنفذ التسلسلي جزءًا من جهاز يتضمّن بلوتوث، سيظهر مفتاح bluetoothServiceClassId
جديد يحتوي على معرّف فئة الخدمة المرتبط بقناة RFCOMM الذي يتصل به المنفذ في معلومات المنفذ التسلسلي التي يتم عرضها عند طلب port.getInfo()
. إذا كان المنفذ التسلسلي مرتبطًا، سيعرض "00001101-0000-1000-8000-00805f9b34fb" أو 0x1101 بشكله القصير.
const { bluetoothServiceClassId } = port.getInfo();
مثال على حالة الاستخدام: التحكّم في سماعات Pixel Buds Pro
تطبيق Pixel Buds Pro Web Companion App هو تطبيق ويب جديد يتيح للمستخدمين التحكّم في سمّاعات Pixel Buds Pro من أي جهاز باستخدام متصفّح ويب. لقد صُمِّم باستخدام تقنيات تطبيقات الويب التقدّمية لتوفير تجربة تحميل فوري ويمكن تثبيته اختياريًا إلى جانب تطبيقات نظام التشغيل الأخرى.
يستخدم التطبيق Web Serial API للاتصال بسمّاعات Pixel Buds Pro. يتيح ذلك للمستخدمين التحكّم في الإعدادات المختلفة على سماعات Pixel Buds Pro، مثل التحكّم الفعّال بالضوضاء ومعادل الصوت ورصد السمّاعة في الأذن وتحديثات البرامج الثابتة.
لتجربة تطبيق Pixel Buds Pro Web Companion App، يمكنك الانتقال إلى mypixelbuds.google.com على جهاز ChromeOS (ستتوفّر على أنظمة أساسية أخرى قريبًا).
![لقطة شاشة لتطبيق Pixel Buds Pro Web Companion](https://developer.chrome.com/static/blog/serial-over-bluetooth/image/screenshot-the-pixel-bud-80348b896e9d5.jpg?authuser=6&hl=ar)
المراجع
خدمات الإقرار
شكرًا لـ "رايلي غرانت" و"توماس شتاينر" و"بن مورس" و"فنسنت شيب" على مراجعاتهم. صورة رئيسية من تصميم ميكا بوميستر على Unإعادة البداية