API Web Serial поддерживает связь со службами RFCOMM на сопряженных устройствах Bluetooth Classic из Chrome 117 на настольном компьютере. Например, это позволяет беспроводным наушникам использовать RFCOMM для управления настройками звука и обновлениями прошивки. Чтобы узнать больше, посетите раздел «Последовательный порт через Bluetooth» в Интернете .
Начиная с Chrome 130 для настольных компьютеров, усовершенствование Web Serial API позволяет веб-приложениям определять, доступен ли последовательный порт Bluetooth RFCOMM, без необходимости открывать порт. Это предотвращает ненужные повторные подключения, если беспроводное устройство было намеренно отключено.
Когда беспроводное устройство выходит за пределы зоны действия хоста, любой беспроводной последовательный порт, открытый веб-приложением, автоматически закрывается. В таких случаях веб-приложение может попытаться повторно открыть порт с помощью метода SerialPort open()
. Однако если беспроводное устройство было намеренно отключено (например, пользователем из панели управления операционной системы), веб-приложение должно воздержаться от повторного открытия порта, чтобы предотвратить повторное подключение к беспроводному устройству.
Раскрывая состояние логического соединения беспроводного устройства, на котором размещен беспроводной последовательный порт, через новый логический атрибут connected
SerialPort, веб-приложения теперь могут различать эти случаи и повторно подключаться только в том случае, если отключение было непреднамеренным.
Атрибут connected
SerialPort истинен для беспроводных последовательных портов, если беспроводное устройство, на котором размещен этот порт, имеет какие-либо активные подключения к системе. Для проводных последовательных портов это справедливо, если порт физически подключен к системе.
В следующем фрагменте показано, как проверить, какие устройства доступны, и потенциально подключиться к ним автоматически.
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 теперь отправляют эти события, когда порт становится логически подключенным или отключенным.
Демо
Ресурсы
Благодарности
Спасибо Джеку Се и Рейли Гранту за их обзоры.