تعديلات على بروتوكول RFCOMM في البلوتوث في Web Serial

François Beaufort
François Beaufort

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

اعتبارًا من الإصدار 130 من Chrome للكمبيوتر المكتبي، يتيح تحسين في Web Serial API لتطبيقات الويب رصد توفّر منفذ تسلسلي Bluetooth RFCOMM بدون الحاجة إلى فتح المنفذ. ويمنع ذلك عمليات إعادة الاتصال غير الضرورية عند فصل الجهاز اللاسلكي عن قصد.

عندما يخرج جهاز لاسلكي من نطاق الجهاز المضيف، يتم إغلاق أي منفذ تسلسلي لاسلكي يفتحه تطبيق ويب تلقائيًا. في هذه الحالات، قد يحاول تطبيق الويب إعادة فتح المنفذ باستخدام طريقة SerialPort open(). ومع ذلك، إذا تم قطع اتصال الجهاز اللاسلكي عن قصد (على سبيل المثال، من قِبل المستخدم من لوحة التحكّم في نظام التشغيل)، يجب أن يمتنع تطبيق الويب عن إعادة فتح المنفذ لمنع إعادة الاتصال بالجهاز اللاسلكي.

من خلال عرض حالة الاتصال المنطقي للجهاز اللاسلكي الذي يستضيف المنفذ التسلسلي اللاسلكي من خلال سمة SerialPort connected منطقية جديدة، يمكن لتطبيقات الويب الآن التمييز بين هذه الحالات، وإعادة الاتصال فقط إذا كان انقطاع الاتصال غير مقصود.

تكون السمة SerialPort connected صحيحة للمنافذ التسلسلية اللاسلكية إذا كان الجهاز اللاسلكي الذي يستضيف المنفذ يتضمّن أي اتصالات نشطة بالنظام. بالنسبة إلى المنافذ التسلسلية السلكية، يكون القيمة صحيحة إذا كان المنفذ متصلاً بالنظام بشكلٍ فعلي.

يوضّح لك المقتطف التالي كيفية التحقّق من الأجهزة المتاحة وإمكانية الاتصال بها تلقائيًا.

const ports = await navigator.serial.getPorts();
for (const port of ports) {
  if (port.connected) {
    // Automatically try to connect to the Bluetooth device.
    await port.open({ baudRate: 9600 });
  } else {
    // Otherwise, when the port is not logically connected:
    // 1. Prompt the user to make sure the Bluetooth device is available.
    // 2. Show a "connect" button to try opening the port.
  }
}

في السابق، كانت المنافذ التسلسلية السلكية فقط تُرسِل أحداث الاتصال والانفصال. تُرسِل الآن المنافذ التسلسلية لبروتوكول RFCOMM في البلوتوث هذه الأحداث عندما يصبح المنفذ متصلاً منطقيًا أو غير متصل.

عرض توضيحي

عرض توضيحي لربط SerialPort

الموارد

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

نشكر "جاك هيه" و"رايلي غرانت" على مراجعتَيهما.