การอัปเดต RFCOMM ของบลูทูธใน Web Serial

François Beaufort
François Beaufort

Web Serial API รองรับการสื่อสารกับ บริการ RFCOMM ในอุปกรณ์บลูทูธคลาสสิกที่จับคู่ไว้จาก Chrome 117 บนเดสก์ท็อป เช่น หูฟังไร้สายสามารถใช้ RFCOMM เพื่อจัดการการตั้งค่าเสียงและการอัปเดตเฟิร์มแวร์ได้ ดูข้อมูลเพิ่มเติมได้ที่ Serial over Bluetooth on the web

ตั้งแต่ Chrome 130 สำหรับเดสก์ท็อปเป็นต้นไป การปรับปรุง Web Serial API ช่วยให้เว็บแอปตรวจพบเมื่อพอร์ตอนุกรม Bluetooth RFCOMM พร้อมใช้งานโดยไม่ต้องเปิดพอร์ต ซึ่งจะช่วยป้องกันการเชื่อมต่อใหม่ที่ไม่จำเป็นเมื่อผู้ใช้ตั้งใจยกเลิกการเชื่อมต่ออุปกรณ์ไร้สาย

เมื่ออุปกรณ์ไร้สายอยู่นอกระยะของโฮสต์ พอร์ตอนุกรมไร้สายที่เว็บแอปเปิดไว้จะปิดโดยอัตโนมัติ ในกรณีดังกล่าว เว็บแอปอาจพยายามเปิดพอร์ตอีกครั้งด้วยเมธอด SerialPort open() อย่างไรก็ตาม หากผู้ใช้ตั้งใจยกเลิกการเชื่อมต่ออุปกรณ์ไร้สาย (เช่น จากแผงควบคุมระบบปฏิบัติการ) เว็บแอปควรหลีกเลี่ยงการเปิดพอร์ตอีกครั้งเพื่อป้องกันไม่ให้เชื่อมต่อกับอุปกรณ์ไร้สายอีก

การเปิดเผยสถานะการเชื่อมต่อเชิงตรรกะของอุปกรณ์ไร้สายที่โฮสต์พอร์ตอนุกรมไร้สายผ่านแอตทริบิวต์ connected ของ SerialPort แบบบูลีนใหม่ช่วยให้เว็บแอปแยกแยะกรณีเหล่านี้ได้แล้ว และจะเชื่อมต่อใหม่ก็ต่อเมื่อการยกเลิกการเชื่อมต่อไม่ได้ตั้งใจ

แอตทริบิวต์ 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

แหล่งข้อมูล

คำขอบคุณ

ขอขอบคุณ Jack Hsieh และ Reilly Grant สำหรับการรีวิว