API Web Serial поддерживает взаимодействие со службами RFCOMM на сопряженных устройствах Bluetooth Classic из Chrome 117 на настольных компьютерах. Например, это позволяет беспроводным наушникам использовать RFCOMM для управления настройками звука и обновлениями прошивки. Подробнее можно узнать в статье «Serial over Bluetooth» в веб-браузере .
Начиная с версии 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.
}
}
Ранее события подключения и отключения передавались только проводными последовательными портами. Теперь же последовательные порты Bluetooth RFCOMM передают эти события, когда порт логически подключается или отключается.
Демо
Ресурсы
- Пояснительная записка
- Изменения в технических характеристиках
- запись ChromeStatus
- Намерение отправить
Благодарности
Благодарим Джека Ше и Рейли Гранта за их отзывы.