الرقم التسلسلي عبر البلوتوث على الويب

فرانسوا بوفورت
فرانسوا بوفورت

تسمح واجهة برمجة تطبيقات Web Bluetooth API وWeb Serial API لتطبيقات الويب بالاتصال بالأجهزة التسلسلية والأجهزة التي تتضمن بلوتوث منخفض الطاقة (BLE)، على التوالي. على الرغم من أن العديد من مطوّري البرامج على الويب يستخدمون واجهات برمجة التطبيقات هذه لتحقيق نجاح كبير، هناك طلب متزايد على دعم أجهزة بلوتوث الكلاسيكية أيضًا.

أما الآن، فتتيح Web Serial API الاتصال بخدمات بروتوكول RFCOMM على الأجهزة المقترنة التي تتضمن الإصدار الكلاسيكي من البلوتوث، بما في ذلك ملف تعريف المنفذ التسلسلي (SPP) في الإصدار 117 من Chrome على سطح المكتب. وهذا يفتح إمكانيات جديدة لمطوري الويب والمستخدمين على حد سواء. في ما يلي بعض الأجهزة الحقيقية التي يمكن أن تستفيد من هذا:

  • تستخدم سماعات الأذن Pixel Buds Pro وسمّاعات الأذن اللاسلكية الأخرى بروتوكول RFCOMM لإدارة إعدادات الصوت وتحديثات البرامج الثابتة.
  • تستخدم أنظمة نقاط البيع المحمولة (SPP) عبر البلوتوث للاتصال بطابعات الإيصالات.
  • تستخدم أجهزة قراءة علامات RFID للماشية ميزة البلوتوث SPP لتسجيل حركات الحيوانات.

بروتوكول RFCOMM للبلوتوث

استرجِع ذكريات التسعينيات. كل ما عليك هو وضع جهاز Palm trial في قاعدة استخدامه لمزامنة التقويم في اليوم التالي. ألن يكون من الأفضل لك إجراء ذلك لاسلكيًا بدلاً من ذلك؟ بفضل تقنية "البلوتوث" الجديدة هذه، يمكنك التخلص من كل تلك الأسلاك غير الضرورية. الشبكات اللاسلكية هي المستقبل هناك مشكلة واحدة فقط، إذ إنّ كل الملفات المتوفّرة مصمّمة للاتصال بكابل RS-232. لذا، يستخدم البلوتوث بروتوكول اتصالات الترددات اللاسلكية (RFCOMM) لتوفير تلك الواجهة لجميع البرامج والأجهزة الحالية.

وحتى اليوم، يتم استخدام خدمات بروتوكول RFCOMM على نطاق واسع في الأجهزة الجديدة والحالية. ويسمح هذا الخيار بتلبية متطلبات وقت الاستجابة ومعدّل نقل البيانات المحدّدة التي لا تستوفيها تقنية Bluetooth Low Energy حتى الآن. وهذا هو السبب وراء تطويرنا عملية دمج بين Web Serial، وهي واجهة برمجة تطبيقات للاتصال بالأجهزة التسلسلية، وتقنية البلوتوث، لإتاحة الوصول إلى خدمات بروتوكول RFCOMM القديمة قبل أن يتم نقل الشركات المصنّعة في نهاية المطاف إلى Bluetooth Low Energy ويمكن للمطورين استخدام Web Bluetooth API بدلاً من ذلك.

التغييرات في Web Serial API

بدءًا من الإصدار 117 من Chrome على أجهزة الكمبيوتر المكتبي، يمكن لمطوّري البرامج على الويب الآن التواصل على نحو موثوق مع الأجهزة التي تتضمّن بلوتوث الكلاسيكي المقترِن من خلال خدمات بروتوكول 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. تحتوي هذه الأجهزة على "معرّف فئة الخدمة" غير ضِمن نطاق UUID العادي للبلوتوث.

عليك تمرير قائمة 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],
});

وتجدُر الإشارة إلى أنّه يتم حظر جميع معرّفات فئة الخدمة التي تستخدم معرِّف Bluetooth SIG Base UUID (أي أرقام التعريف الفريدة العالمية (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 هو تطبيق ويب جديد يسمح للمستخدمين بالتحكّم في سمّاعات Pixel Buds Pro من أيّ جهاز مزوّد بمتصفّح ويب. تم تصميم هذه الخدمة باستخدام تقنيات تطبيقات الويب التقدّمية لتوفير تجربة تحميل فورية، ويمكن تثبيتها إلى جانب تطبيقات نظام التشغيل الأخرى اختياريًا.

يستخدم التطبيق Web Serial API للتواصل مع سماعات Pixel Buds Pro. يتيح هذا الإجراء للمستخدمين التحكّم في الإعدادات المتنوّعة على سماعات Pixel Buds Pro، مثل التحكّم النشط في الضوضاء ومعادل الصوت ورصد السمّاعة في الأذن وتحديثات البرامج الثابتة.

لتجربة تطبيق Pixel Buds Pro Web Companion، يُرجى الانتقال إلى mypixelbuds.google.com على جهاز ChromeOS (تتوفّر قريبًا أنظمة أساسية أخرى).

لقطة شاشة لتطبيق Pixel Buds Pro Web Companion
التطبيق المصاحب لسمّاعات Pixel Buds Pro Web Companion

المراجِع

خدمات الإقرار

ونشكر "رايلي غرانت" و"توماس شتاينر" و"بن مورس" و"فنسنت شيب" على مراجعاتهم. صورة رئيسية من إعداد ميكا بوميستر على قناة Unsplash