API веб-последовательного порта
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из самых широко используемых браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Экспериментальная функция: Это экспериментальная технология
Тщательно ознакомьтесь со таблицей совместимости браузеров перед использованием в производстве.
Примечание: Эта функция доступна в специализированных веб-воркерах.
API веб-последовательного порта предоставляет способ для веб-сайтов чтения и записи данных в устройства последовательной связи. Эти устройства могут быть подключены через последовательный порт или быть устройствами USB или Bluetooth, эмулирующими последовательный порт.
Концепции и использование
API веб-последовательного порта — это один из набора API, которые позволяют веб-сайтам взаимодействовать с периферийными устройствами, подключенными к компьютеру пользователя. Он обеспечивает возможность подключения к устройствам, которым операционная система требуется для взаимодействия через API последовательного порта, а не USB, к которому можно получить доступ через API WebUSB, или устройств ввода, к которым можно получить доступ через API WebHID.
Примеры устройств последовательной связи включают 3D-принтеры и микроконтроллеры, такие как плату BBC micro:bit.
Интерфейсы
-
SerialЭкспериментальная -
Предоставляет атрибуты и методы для поиска и подключения к последовательным портам с веб-страницы.
-
SerialPortЭкспериментальная -
Предоставляет доступ к последовательному порту на устройстве-хосте.
Расширения для других интерфейсов
HTTP-заголовки
-
Permissions-Policyserialдиректива -
Управляет тем, разрешено ли текущему документу использовать API веб-последовательного порта для связи с устройствами последовательной связи, подключенными напрямую через последовательный порт, или через устройства USB или Bluetooth, эмулирующие последовательный порт.
Примеры
Следующие примеры демонстрируют некоторые функции, предоставляемые API веб-последовательного порта.
Проверка доступных портов
В следующем примере показано, как проверить доступные порты и разрешить пользователю предоставить разрешение на доступ к дополнительным портам.
События connect и disconnect позволяют сайтам реагировать на подключение или отключение устройства от системы. Затем вызывается метод getPorts() для отображения подключенных портов, к которым сайт уже имеет доступ.
Если сайту не предоставляется доступ к подключенным портам, ему нужно дождаться активации пользователем, чтобы продолжить. В этом примере мы используем обработчик события click на кнопке для этой задачи. Для ограничения набора устройств, отображаемых пользователю, к только устройствам USB, созданным определенным производителем, фильтру передаётся в requestPort() с идентификатором поставщика USB.
navigator.serial.addEventListener("connect", (e) => {
// Connect to `e.target` or add it to a list of available ports.
});
navigator.serial.addEventListener("disconnect", (e) => {
// Remove `e.target` from the list of available ports.
});
navigator.serial.getPorts().then((ports) => {
// Initialize the list of available ports with `ports` on page load.
});
button.addEventListener("click", () => {
const usbVendorId = 0xabcd;
navigator.serial
.requestPort({ filters: [{ usbVendorId }] })
.then((port) => {
// Connect to `port` or add it to the list of available ports.
})
.catch((e) => {
// The user didn't select a port.
});
});
Чтение данных из порта
Следующий пример демонстрирует чтение данных из порта. Внешний цикл обрабатывает некритические ошибки, создавая нового читателя до тех пор, пока не возникнет критическая ошибка и SerialPort.readable не станет null.
while (port.readable) {
const reader = port.readable.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
// |reader| has been canceled.
break;
}
// Do something with |value|...
}
} catch (error) {
// Handle |error|...
} finally {
reader.releaseLock();
}
}
Спецификации
| Спецификация |
|---|
| API веб-последовательного порта # serial-interface |
Совместимость браузеров
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
Web_Serial_API |
89 | 89 | Нет | 75 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
getPorts |
89 | 89 | Нет | 75 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
requestPort |
89 | 89 | Нет | 75 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API