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

François Beaufort
François Beaufort

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

ตั้งแต่ Chrome 130 สำหรับเดสก์ท็อป การปรับปรุง Web Serial API ช่วยให้เว็บแอปตรวจจับได้เมื่อมีพอร์ตอนุกรม 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

แหล่งข้อมูล

บริการรับรองคำให้การ

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