עדכונים של Bluetooth RFCOMM ב-Web Serial

François Beaufort
François Beaufort

Web Serial API תומך בתקשורת עם שירותי RFCOMM במכשירי Bluetooth Classic שבוצע בהם צימוד, החל מ-Chrome 117 במחשב. לדוגמה, ההגדרה הזו מאפשרת לאוזניות אלחוטיות להשתמש ב-RFCOMM כדי לנהל את הגדרות האודיו ואת עדכוני הקושחה. מידע נוסף זמין במאמר בנושא Serial over Bluetooth on the web.

החל מ-Chrome 130 למחשב, שיפור ב-Web Serial API מאפשר לאפליקציות אינטרנט לזהות מתי יציאה טורית של Bluetooth RFCOMM זמינה, בלי לפתוח את היציאה. כך נמנעים חיבורים מחדש מיותרים אם המכשיר האלחוטי נותק בכוונה.

כשמכשיר אלחוטי יוצא מטווח הקליטה של המארח, כל יציאה טורית אלחוטית שנפתחה על ידי אפליקציית אינטרנט נסגרת באופן אוטומטי. במקרים כאלה, אפליקציית האינטרנט עשויה לנסות לפתוח מחדש את היציאה באמצעות השיטה SerialPort open(). עם זאת, אם המכשיר האלחוטי נותק בכוונה (לדוגמה, על ידי המשתמש מלוח הבקרה של מערכת ההפעלה), אפליקציית האינטרנט לא צריכה לפתוח מחדש את היציאה כדי למנוע חיבור מחדש למכשיר האלחוטי.

באמצעות חשיפת מצב החיבור הלוגי של המכשיר האלחוטי שמארח את היציאה הטורית האלחוטית דרך מאפיין בוליאני חדש של SerialPort connected, אפליקציות אינטרנט יכולות עכשיו להבחין בין המקרים האלה, ולבצע חיבור מחדש רק אם הניתוק לא היה מכוון.

המאפיין SerialPort connected הוא true (נכון) עבור יציאות טוריות אלחוטיות אם למכשיר האלחוטי שמארח את היציאה יש חיבורים פעילים למערכת. עבור יציאות טוריות קוויות, הערך הוא True אם היציאה מחוברת פיזית למערכת.

בקטע הקוד הבא אפשר לראות איך בודקים אילו מכשירים זמינים ואפשר להתחבר אליהם אוטומטית.

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.
  }
}

בעבר, רק יציאות טוריות קוויות שלחו אירועי connect (חיבור) ו-disconnect (ניתוק). יציאות טוריות של Bluetooth RFCOMM שולחות עכשיו את האירועים האלה כשהיציאה מתחברת או מתנתקת באופן לוגי.

הדגמה (דמו)

הדגמה של חיבור SerialPort

משאבים

תודות

תודה ל-Jack Hsieh ול-Reilly Grant על הביקורות שלהם.