chrome.usb

Opis

Użyj interfejsu API chrome.usb, aby wchodzić w interakcje z podłączonymi urządzeniami USB. Ten interfejs API zapewnia dostęp do operacji USB w kontekście aplikacji. Dzięki niemu aplikacje mogą działać jako sterowniki urządzeń. Błędy generowane przez ten interfejs API są zgłaszane przez ustawienie runtime.lastError i wykonanie zwykłego wywołania zwrotnego funkcji. W takim przypadku zwykłe parametry wywołania zwrotnego będą niezdefiniowane.

Uprawnienia

usb

Dostępność

Tylko w systemie ChromeOS

Typy

ConfigDescriptor

Właściwości

  • aktywna

    wartość logiczna

    Chrome 47 lub nowsza wersja

    Czy to jest aktywna konfiguracja?

  • configurationValue

    liczba

    Numer konfiguracji.

  • opis

    ciąg znaków opcjonalny

    Opis konfiguracji.

  • extra_data

    ArrayBuffer

    Dodatkowe dane deskryptora powiązane z tą konfiguracją.

  • interfejsy

    Dostępne interfejsy.

  • maxPower

    liczba

    Maksymalna moc potrzebna temu urządzeniu w miliamperach (mA).

  • remoteWakeup

    wartość logiczna

    Urządzenie obsługuje zdalne wybudzanie.

  • selfPowered

    wartość logiczna

    Urządzenie ma własne zasilanie.

ConnectionHandle

Właściwości

  • nick

    liczba

    Nieprzezroczysty uchwyt reprezentujący to połączenie z urządzeniem USB oraz wszystkie powiązane z nim interfejsy i oczekujące transfery. Nowy uchwyt jest tworzony przy każdym otwarciu urządzenia. Uchwyt połączenia jest inny niż Device.device.

  • productId

    liczba

    Identyfikator produktu.

  • vendorId

    liczba

    Identyfikator dostawcy urządzenia.

ControlTransferInfo

Właściwości

  • dane

    ArrayBuffer opcjonalny

    Dane do przesłania (wymagane tylko w przypadku transferów wyjściowych).

  • direction

    Kierunek transferu ("in" lub "out").

  • indeks

    liczba

    Pole wIndex, patrz Ibid.

  • długość

    number optional

    Maksymalna liczba bajtów do odebrania (wymagana tylko w przypadku transferów wejściowych).

  • odbiorca

    Cel transferu. Jeśli "interface" lub "endpoint", cel podany przez index musi zostać zgłoszony.

  • żądanie

    liczba

    Pole bRequest, patrz Universal Serial Bus Specification Revision 1.1 § 9.3.

  • requestType

    Typ żądania.

  • czas oczekiwania

    number optional

    Chrome 43 lub nowsza wersja

    Limit czasu żądania (w milisekundach). Wartość domyślna 0 oznacza brak limitu czasu.

  • wartość

    liczba

    Pole wValue, patrz Ibid.

Device

Właściwości

  • urządzenie

    liczba

    Nieprzezroczysty identyfikator urządzenia USB. Pozostaje niezmieniony, dopóki urządzenie nie zostanie odłączone.

  • manufacturerName

    tekst

    Chrome 46 lub nowsza wersja

    Ciąg iManufacturer odczytany z urządzenia, jeśli jest dostępny.

  • productId

    liczba

    Identyfikator produktu.

  • nazwaProduktu

    tekst

    Chrome 46 lub nowsza wersja

    Ciąg iProduct odczytany z urządzenia, jeśli jest dostępny.

  • serialNumber

    tekst

    Chrome 46 lub nowsza wersja

    Ciąg iSerialNumber odczytany z urządzenia (jeśli jest dostępny).

  • vendorId

    liczba

    Identyfikator dostawcy urządzenia.

  • wersja

    liczba

    Chrome 51 lub nowsza wersja

    Wersja urządzenia (pole bcdDevice).

DeviceFilter

Właściwości

  • interfaceClass

    number optional

    Klasa interfejsu USB, pasuje do dowolnego interfejsu na urządzeniu.

  • interfaceProtocol

    number optional

    Protokół interfejsu USB, sprawdzany tylko wtedy, gdy podklasa interfejsu jest zgodna.

  • interfaceSubclass

    number optional

    Podklasa interfejsu USB, sprawdzana tylko wtedy, gdy klasa interfejsu jest zgodna.

  • productId

    number optional

    Identyfikator produktu urządzenia, sprawdzany tylko wtedy, gdy identyfikator dostawcy jest zgodny.

  • vendorId

    number optional

    Identyfikator dostawcy urządzenia.

DevicePromptOptions

Właściwości

  • filtry

    DeviceFilter[] opcjonalny

    Filtrowanie listy urządzeń wyświetlanej użytkownikowi. Jeśli podasz kilka filtrów, wyświetlą się urządzenia pasujące do dowolnego z nich.

  • wiele

    boolean opcjonalne

    Zezwalaj użytkownikowi na wybieranie wielu urządzeń.

Direction

Direction, Recipient, RequestType i TransferType są mapowane na ich odpowiedniki w specyfikacji USB.

Typ wyliczeniowy

"in"

"out"

EndpointDescriptor

Właściwości

  • adres

    liczba

    Adres punktu końcowego.

  • direction

    Kierunek transferu.

  • extra_data

    ArrayBuffer

    Dodatkowe dane deskryptora powiązane z tym punktem końcowym.

  • maximumPacketSize

    liczba

    Maksymalny rozmiar pakietu.

  • pollingInterval

    number optional

    Odstęp sondowania (tylko przerwanie i izochroniczny).

  • synchronizacja

    Tryb synchronizacji transferu (tylko izochroniczny).

  • Typ przeniesienia.

  • użycie

    UsageType opcjonalny

    Wskazówka dotycząca użycia punktu końcowego.

EnumerateDevicesAndRequestAccessOptions

Właściwości

  • interfaceId

    number optional

    Identyfikator interfejsu, do którego chcesz poprosić o dostęp. Dostępne tylko w ChromeOS. Nie ma to wpływu na inne platformy.

  • productId

    liczba

    Identyfikator produktu.

  • vendorId

    liczba

    Identyfikator dostawcy urządzenia.

EnumerateDevicesOptions

Właściwości

  • filtry

    DeviceFilter[] opcjonalny

    Zwrócone zostanie urządzenie pasujące do dowolnego z podanych filtrów. Pusta lista filtrów spowoduje zwrócenie wszystkich urządzeń, do których aplikacja ma uprawnienia.

  • productId

    number optional

    Wycofane

    Odpowiednik ustawienia DeviceFilter.productId.

  • vendorId

    number optional

    Wycofane

    Odpowiednik ustawienia DeviceFilter.vendorId.

GenericTransferInfo

Właściwości

  • dane

    ArrayBuffer opcjonalny

    Dane do przesłania (wymagane tylko w przypadku transferów wyjściowych).

  • direction

    Kierunek transferu ("in" lub "out").

  • punkt końcowy

    liczba

    Adres docelowego punktu końcowego. Interfejs zawierający ten punkt końcowy musi zostać przejęty.

  • długość

    number optional

    Maksymalna liczba bajtów do odebrania (wymagana tylko w przypadku transferów wejściowych).

  • czas oczekiwania

    number optional

    Chrome 43 lub nowsza wersja

    Limit czasu żądania (w milisekundach). Wartość domyślna 0 oznacza brak limitu czasu.

InterfaceDescriptor

Właściwości

  • alternateSetting

    liczba

    Numer alternatywnego ustawienia interfejsu (domyślnie 0

  • opis

    ciąg znaków opcjonalny

    Opis interfejsu.

  • punkty końcowe

    Dostępne punkty końcowe.

  • extra_data

    ArrayBuffer

    Dodatkowe dane deskryptora powiązane z tym interfejsem.

  • interfaceClass

    liczba

    Klasa interfejsu USB.

  • interfaceNumber

    liczba

    Numer interfejsu.

  • interfaceProtocol

    liczba

    Protokół interfejsu USB.

  • interfaceSubclass

    liczba

    Podklasa interfejsu USB.

IsochronousTransferInfo

Właściwości

  • packetLength

    liczba

    Długość każdego pakietu w tym transferze.

  • pakiety

    liczba

    Łączna liczba pakietów w tym przeniesieniu.

  • transferInfo

    Parametry transferu. Długość transferu lub bufor danych określony w tym bloku parametrów są dzielone wzdłuż granic packetLength, aby utworzyć poszczególne pakiety transferu.

Recipient

Typ wyliczeniowy

"device"

"interface"

"endpoint"

"other"

RequestType

Typ wyliczeniowy

"standard"

"class"

"vendor"

"reserved"

SynchronizationType

W przypadku trybów przerwania i izochronicznego SynchronizationType i UsageType są mapowane na ich odpowiedniki w specyfikacji USB.

Typ wyliczeniowy

"asynchronous"

"adaptive"

"synchronous"

TransferResultInfo

Właściwości

  • dane

    ArrayBuffer opcjonalny

    Dane zwrócone przez transfer wejściowy. undefined za transfery wychodzące.

  • resultCode

    number optional

    Wartość 0 oznacza, że transfer zakończył się powodzeniem. Inne wartości oznaczają niepowodzenie.

TransferType

Typ wyliczeniowy

"control"

"interrupt"

"isochronous"

"bulk"

UsageType

Typ wyliczeniowy

"data"

"feedback"

"explicitFeedback"

"periodic"

"notification"

Metody

bulkTransfer()

Obietnica
chrome.usb.bulkTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Wykonuje zbiorcze przenoszenie na określonym urządzeniu.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

claimInterface()

Obietnica
chrome.usb.claimInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

Przejmuje interfejs na urządzeniu USB. Zanim dane będą mogły zostać przesłane do interfejsu lub powiązanych punktów końcowych, interfejs musi zostać przejęty. W danym momencie tylko jeden uchwyt połączenia może przejąć interfejs. Jeśli interfejs został już przejęty, to wywołanie się nie powiedzie.

Metodę releaseInterface należy wywołać, gdy interfejs nie jest już potrzebny.

Parametry

  • otwarte połączenie z urządzeniem,

  • interfaceNumber

    liczba

    Interfejs, który ma zostać przejęty.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    () => void

Zwroty

  • thought Promise<void>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

closeDevice()

Obietnica
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<void>

Zamyka uchwyt połączenia. Wywoływanie operacji na uchwycie po jego zamknięciu jest bezpieczne, ale nie powoduje żadnych działań.

Parametry

Zwroty

  • thought Promise<void>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

controlTransfer()

Obietnica
chrome.usb.controlTransfer(
  handle: ConnectionHandle,
  transferInfo: ControlTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Wykonuje przeniesienie kontroli na określonym urządzeniu.

Przeniesienia kontroli odnoszą się do urządzenia, interfejsu lub punktu końcowego. Przeniesienie do interfejsu lub punktu końcowego wymaga zgłoszenia praw własności do interfejsu.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

findDevices()

Obietnica
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)
: Promise<ConnectionHandle[]>

Wyszukuje urządzenia USB określone przez identyfikatory dostawcy, produktu i (opcjonalnie) interfejsu, a jeśli uprawnienia na to pozwalają, otwiera je do użycia.

Jeśli prośba o dostęp zostanie odrzucona lub nie uda się otworzyć urządzenia, uchwyt połączenia nie zostanie utworzony ani zwrócony.

Wywołanie tej metody jest równoważne wywołaniu metody getDevices, a następnie metody openDevice dla każdego urządzenia.

Parametry

Zwroty

  • Promise<ConnectionHandle[]>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

getConfiguration()

Obietnica
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<ConfigDescriptor>

Pobiera deskryptor konfiguracji dla aktualnie wybranej konfiguracji.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

getConfigurations()

Promise Chrome 47+
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)
: Promise<ConfigDescriptor[]>

Zwraca pełny zestaw deskryptorów konfiguracji urządzenia.

Parametry

Zwroty

  • Promise<ConfigDescriptor[]>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

getDevices()

Obietnica
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)
: Promise<Device[]>

Wyświetla listę podłączonych urządzeń USB.

Parametry

  • Właściwości, które mają być wyszukiwane na urządzeniach docelowych.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    (devices: Device[]) => void

Zwroty

  • Promise<Device[]>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

getUserSelectedDevices()

Obietnica
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)
: Promise<Device[]>

Wyświetla użytkownikowi selektor urządzeń i zwraca wybrane obiekty Device. Jeśli użytkownik anuluje selektor, urządzenia będą puste. Aby wyświetlić okno, wymagany jest gest użytkownika. Bez gestu użytkownika wywołanie zwrotne zostanie uruchomione tak, jakby użytkownik anulował działanie.

Parametry

  • Konfiguracja okna wyboru urządzenia.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    (devices: Device[]) => void

Zwroty

  • Promise<Device[]>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

interruptTransfer()

Obietnica
chrome.usb.interruptTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Wykonuje transfer przerwania na określonym urządzeniu.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

isochronousTransfer()

Obietnica
chrome.usb.isochronousTransfer(
  handle: ConnectionHandle,
  transferInfo: IsochronousTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Wykonuje transfer izochroniczny na określonym urządzeniu.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

listInterfaces()

Obietnica
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<InterfaceDescriptor[]>

Wyświetla listę wszystkich interfejsów na urządzeniu USB.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

openDevice()

Obietnica
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)
: Promise<ConnectionHandle>

Otwiera urządzenie USB zwrócone przez getDevices.

Parametry

Zwroty

  • Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

releaseInterface()

Obietnica
chrome.usb.releaseInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

Zwalnia interfejs, do którego zgłoszono roszczenie.

Parametry

  • otwarte połączenie z urządzeniem,

  • interfaceNumber

    liczba

    Interfejs, który ma zostać zwolniony.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    () => void

Zwroty

  • thought Promise<void>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

requestAccess()

Promise Wycofane
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)
: Promise<boolean>

Ta funkcja była przeznaczona dla systemu operacyjnego Chrome, a wywołanie jej na innych platformach kończyło się niepowodzeniem. Ta operacja jest teraz wykonywana niejawnie w ramach openDevice, a ta funkcja zwraca true na wszystkich platformach.

Wysyła do brokera uprawnień prośbę o dostęp do urządzenia przejętego przez ChromeOS, jeśli dany interfejs na urządzeniu nie został przejęty.

Parametry

  • urządzenie

    Device, do którego chcesz poprosić o dostęp.

  • interfaceId

    liczba

    Żądany interfejs.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    (success: boolean) => void

    • sukces

      wartość logiczna

Zwroty

  • Promise<boolean>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

resetDevice()

Obietnica
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<boolean>

Próbuje zresetować urządzenie USB. Jeśli resetowanie się nie powiedzie, dany uchwyt połączenia zostanie zamknięty, a urządzenie USB zostanie odłączone, a następnie ponownie podłączone. W takim przypadku należy ponownie wywołać funkcję getDevices lub findDevices, aby uzyskać dostęp do urządzenia.

Parametry

  • Uchwyt połączenia do zresetowania.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    (success: boolean) => void

    • sukces

      wartość logiczna

Zwroty

  • Promise<boolean>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

setConfiguration()

Obietnica
chrome.usb.setConfiguration(
  handle: ConnectionHandle,
  configurationValue: number,
  callback?: function,
)
: Promise<void>

Wybierz konfigurację urządzenia.

Ta funkcja skutecznie resetuje urządzenie, wybierając jedną z dostępnych konfiguracji urządzenia. Prawidłowe są tylko wartości konfiguracji większe niż 0, ale niektóre urządzenia z błędami mają działającą konfigurację 0, więc ta wartość jest dozwolona.

Parametry

  • otwarte połączenie z urządzeniem,

  • configurationValue

    liczba

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    () => void

Zwroty

  • thought Promise<void>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

setInterfaceAlternateSetting()

Obietnica
chrome.usb.setInterfaceAlternateSetting(
  handle: ConnectionHandle,
  interfaceNumber: number,
  alternateSetting: number,
  callback?: function,
)
: Promise<void>

Wybiera ustawienie alternatywne w interfejsie, który został wcześniej przejęty.

Parametry

  • Otwarte połączenie z urządzeniem, na którym ten interfejs został przejęty.

  • interfaceNumber

    liczba

    Interfejs do skonfigurowania.

  • alternateSetting

    liczba

    Ustawienie alternatywne do skonfigurowania.

  • callback

    function opcjonalne

    Parametr callback wygląda tak:

    () => void

Zwroty

  • thought Promise<void>

    Chrome 116 lub nowsza wersja

    Obiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.

Wydarzenia

onDeviceAdded

chrome.usb.onDeviceAdded.addListener(
  callback: function,
)

Zdarzenie generowane po dodaniu urządzenia do systemu. Zdarzenia są przesyłane tylko do aplikacji i rozszerzeń, które mają uprawnienia dostępu do urządzenia. Uprawnienia mogły zostać przyznane podczas instalacji, gdy użytkownik zaakceptował opcjonalne uprawnienie (patrz permissions.request) lub za pomocą getUserSelectedDevices.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    (device: Device) => void

onDeviceRemoved

chrome.usb.onDeviceRemoved.addListener(
  callback: function,
)

Zdarzenie generowane, gdy urządzenie zostanie usunięte z systemu. Informacje o tym, które zdarzenia są dostarczane, znajdziesz w onDeviceAdded.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    (device: Device) => void