Spec-Zone.ru › Web APIs

API веб-последовательного порта

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает в некоторых из самых широко используемых браузеров.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Экспериментальная функция: Это экспериментальная технология
Тщательно ознакомьтесь со таблицей совместимости браузеров перед использованием в производстве.

Примечание: Эта функция доступна в специализированных веб-воркерах.

API веб-последовательного порта предоставляет способ для веб-сайтов чтения и записи данных в устройства последовательной связи. Эти устройства могут быть подключены через последовательный порт или быть устройствами USB или Bluetooth, эмулирующими последовательный порт.

Концепции и использование

API веб-последовательного порта — это один из набора API, которые позволяют веб-сайтам взаимодействовать с периферийными устройствами, подключенными к компьютеру пользователя. Он обеспечивает возможность подключения к устройствам, которым операционная система требуется для взаимодействия через API последовательного порта, а не USB, к которому можно получить доступ через API WebUSB, или устройств ввода, к которым можно получить доступ через API WebHID.

Примеры устройств последовательной связи включают 3D-принтеры и микроконтроллеры, такие как плату BBC micro:bit.

Интерфейсы

Serial Экспериментальная

Предоставляет атрибуты и методы для поиска и подключения к последовательным портам с веб-страницы.

SerialPort Экспериментальная

Предоставляет доступ к последовательному порту на устройстве-хосте.

Расширения для других интерфейсов

Navigator.serial Только чтение Экспериментальная

Возвращает объект Serial, который представляет собой точку входа в API веб-последовательного порта для управления последовательными портами.

WorkerNavigator.serial Только чтение Экспериментальная

Возвращает объект Serial, который представляет собой точку входа в API веб-последовательного порта для управления последовательными портами.

HTTP-заголовки

Permissions-Policy serial директива

Управляет тем, разрешено ли текущему документу использовать 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 Нет Нет Нет Нет Нет Нет Нет

См. также

  • Чтение и запись в последовательный порт
  • Начало работы с API веб-последовательного порта

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API