Thông tin cập nhật về Bluetooth RFCOMM trong Web Serial

François Beaufort
François Beaufort

Web Serial API hỗ trợ giao tiếp với các dịch vụ RFCOMM trên các thiết bị Bluetooth Classic đã ghép nối từ Chrome 117 trên máy tính. Ví dụ: tính năng này cho phép tai nghe không dây sử dụng RFCOMM để quản lý các chế độ cài đặt âm thanh và bản cập nhật chương trình cơ sở. Hãy xem bài viết Giao tiếp nối tiếp qua Bluetooth trên web để tìm hiểu thêm.

Kể từ Chrome 130 cho máy tính, một điểm cải tiến đối với Web Serial API cho phép các ứng dụng web phát hiện thời điểm có cổng nối tiếp Bluetooth RFCOMM mà không cần phải mở cổng. Điều này giúp ngăn việc kết nối lại không cần thiết khi thiết bị không dây bị ngắt kết nối một cách có chủ ý.

Khi một thiết bị không dây nằm ngoài phạm vi của máy chủ, mọi cổng nối tiếp không dây do ứng dụng web mở sẽ tự động đóng. Trong những trường hợp như vậy, ứng dụng web có thể cố gắng mở lại cổng bằng phương thức SerialPort open(). Tuy nhiên, nếu thiết bị không dây bị ngắt kết nối một cách có chủ ý (ví dụ: do người dùng ngắt kết nối trên bảng điều khiển hệ điều hành), thì ứng dụng web không nên mở lại cổng để tránh kết nối lại với thiết bị không dây.

Bằng cách hiển thị trạng thái kết nối logic của thiết bị không dây lưu trữ cổng nối tiếp không dây thông qua thuộc tính SerialPort connected boolean mới, các ứng dụng web hiện có thể phân biệt những trường hợp này và chỉ kết nối lại nếu việc ngắt kết nối là ngoài ý muốn.

Thuộc tính SerialPort connected là đúng đối với cổng nối tiếp không dây nếu thiết bị không dây lưu trữ cổng có bất kỳ kết nối nào đang hoạt động với hệ thống. Đối với cổng nối tiếp có dây, giá trị này là đúng nếu cổng được gắn vào hệ thống.

Đoạn mã sau đây cho bạn biết cách kiểm tra xem có những thiết bị nào và có thể tự động kết nối với những thiết bị đó hay không.

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

Trước đây, chỉ có cổng nối tiếp có dây mới gửi các sự kiện kết nốiđứt kết nối. Giờ đây, cổng nối tiếp Bluetooth RFCOMM sẽ điều phối các sự kiện này khi cổng được kết nối hoặc ngắt kết nối theo logic.

Bản minh hoạ

Minh hoạ kết nối SerialPort.

Tài nguyên

Thư cảm ơn

Cảm ơn Jack Hsieh và Reilly Grant đã xem xét.