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

François Beaufort
François Beaufort

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

اعتبارًا من الإصدار 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.
  }
}

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

عرض توضيحي

عرض توضيحي لـ SerialPort connected

الموارد

كلمة شكر

نشكر Jack Hsieh وReilly Grant على مراجعتَيهما.