chrome.usb

Opis

Używaj interfejsu API chrome.usb do interakcji z podłączonymi urządzeniami USB. Ten interfejs API zapewnia dostęp do operacji USB z poziomu aplikacji. Za jego pomocą aplikacje mogą działać jako sterowniki urządzeń sprzętowych. Błędy generowane przez ten interfejs API są zgłaszane przez ustawienie runtime.lastError i wykonywanie zwykłego wywołania zwrotnego funkcji. Zwykłe parametry wywołania zwrotnego będą w tym przypadku nieokreślone.

Uprawnienia

usb

Typy

ConfigDescriptor

Właściwości

  • aktywna

    wartość logiczna

    Chrome w wersji 47 lub nowszej .

    Czy to jest aktywna konfiguracja?

  • configurationValue

    liczba

    Numer konfiguracji.

  • opis

    ciąg znaków opcjonalny

    Opis konfiguracji.

  • extra_data

    SlateBuffer

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

  • interfejsy

    Dostępne interfejsy.

  • maxPower

    liczba

    Maksymalna moc wymagana przez to urządzenie w miliamach (mA).

  • remoteWakeup

    wartość logiczna

    Urządzenie obsługuje zdalne wybudzanie.

  • selfPowered

    wartość logiczna

    Urządzenie jest zasilane we własnym zakresie.

ConnectionHandle

Właściwości

  • nick

    liczba

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

  • productId

    liczba

    Identyfikator produktu.

  • vendorId

    liczba

    Identyfikator dostawcy urządzenia.

ControlTransferInfo

Właściwości

  • dane

    SlateBuffer opcjonalnie

    Dane do przesłania (wymagane tylko podczas przesyłania danych wyjściowych).

  • direction

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

  • indeks

    liczba

    Pole wIndex, patrz Ibid.

  • długość

    liczba opcjonalnie

    Maksymalna liczba bajtów do odebrania (wymagana tylko podczas przesyłania danych wejściowych).

  • obdarowany

    Cel przeniesienia. Jeśli "interface" lub "endpoint" musi zostać osiągnięta wartość docelowa podana w index.

  • żądanie

    liczba

    Pole bRequest zawiera wersję 1.1 specyfikacji uniwersalnej magistrali szeregowej, § 9.3.

  • requestType

    Typ żądania.

  • czas oczekiwania

    liczba opcjonalnie

    Chrome w wersji 43 lub nowszej .

    Czas oczekiwania na żądanie (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. Pozostanie niezmieniona do czasu odłączenia urządzenia.

  • manufacturerName

    ciąg znaków

    Chrome w wersji 46 lub nowszej, .

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

  • productId

    liczba

    Identyfikator produktu.

  • nazwaProduktu

    ciąg znaków

    Chrome w wersji 46 lub nowszej, .

    Ciąg znaków iProduct odczytywany z urządzenia, jeśli jest dostępny.

  • serialNumber

    ciąg znaków

    Chrome w wersji 46 lub nowszej, .

    Ciąg znaków iSerialNumber odczytywany z urządzenia, jeśli jest dostępny.

  • vendorId

    liczba

    Identyfikator dostawcy urządzenia.

  • wersja

    liczba

    Chrome w wersji 51 lub nowszej .

    Wersja urządzenia (pole bcdDevice).

DeviceFilter

Właściwości

  • interfaceClass

    liczba opcjonalnie

    Klasa interfejsu USB, która odpowiada dowolnemu interfejsowi urządzenia.

  • interfaceProtocol

    liczba opcjonalnie

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

  • interfaceSubclass

    liczba opcjonalnie

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

  • productId

    liczba opcjonalnie

    Identyfikator produktu urządzenia, zaznaczony tylko wtedy, gdy identyfikator dostawcy pasuje.

  • vendorId

    liczba opcjonalnie

    Identyfikator dostawcy urządzenia.

DevicePromptOptions

Właściwości

  • filtry

    DeviceFilter[] opcjonalny

    Przefiltruj listę urządzeń przedstawianych użytkownikowi. Jeśli podasz kilka filtrów, będą wyświetlane urządzenia pasujące do dowolnego filtra.

  • wiele

    Wartość logiczna opcjonalna

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

Direction

Direction, Recipient, RequestType oraz TransferType są mapowane na ich nazwy zgodnie ze specyfikacją USB.

Typ wyliczeniowy

"in"

"out"

EndpointDescriptor

Właściwości

  • adres

    liczba

    Adres punktu końcowego.

  • direction

    Kierunek przenoszenia.

  • extra_data

    SlateBuffer

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

  • maximumPacketSize

    liczba

    Maksymalny rozmiar pakietu.

  • pollingInterval

    liczba opcjonalnie

    Interwał odpytywania (tylko w trybie przerywanym i izochronologicznym).

  • synchronizacja

    Tryb synchronizacji transferu (tylko w trybie odstępu czasowego).

  • Typ transferu.

  • wykorzystanie

    Opcjonalne UsageType

    Wskazówka dotycząca wykorzystania punktu końcowego.

EnumerateDevicesAndRequestAccessOptions

Właściwości

  • interfaceId

    liczba opcjonalnie

    Identyfikator interfejsu, do którego chcesz poprosić o dostęp. Funkcja dostępna 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

    Zostanie zwrócone urządzenie pasujące do dowolnego filtra. Pusta lista filtrów zwraca wszystkie urządzenia, do których aplikacja ma uprawnienia.

  • productId

    liczba opcjonalnie

    Wycofano

    Odpowiednik ustawienia DeviceFilter.productId.

  • vendorId

    liczba opcjonalnie

    Wycofano

    Odpowiednik ustawienia DeviceFilter.vendorId.

GenericTransferInfo

Właściwości

  • dane

    SlateBuffer opcjonalnie

    Dane do przesłania (wymagane tylko podczas przesyłania danych wyjściowych).

  • direction

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

  • punkt końcowy

    liczba

    Adres docelowego punktu końcowego. Interfejs zawierający ten punkt końcowy musi być zarezerwowany.

  • długość

    liczba opcjonalnie

    Maksymalna liczba bajtów do odebrania (wymagana tylko podczas przesyłania danych wejściowych).

  • czas oczekiwania

    liczba opcjonalnie

    Chrome w wersji 43 lub nowszej .

    Czas oczekiwania na żądanie (w milisekundach). Wartość domyślna 0 oznacza brak limitu czasu.

InterfaceDescriptor

Właściwości

  • alternateSetting

    liczba

    Numer ustawienia alternatywnego interfejsu (wartość domyślna to 0)

  • opis

    ciąg znaków opcjonalny

    Opis interfejsu.

  • punkty końcowe

    Dostępne punkty końcowe.

  • extra_data

    SlateBuffer

    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 ramach tego transferu.

  • pakiety

    liczba

    Łączna liczba pakietów w ramach tego transferu.

  • transferInfo

    Parametry transferu. Długość transferu lub bufor danych określone w tym bloku parametrów są podzielone wzdłuż granic packetLength, tworząc poszczególne pakiety przesyłanego danych.

Recipient

Typ wyliczeniowy

"device"

"interface"

"endpoint"

"inna"

RequestType

Typ wyliczeniowy

"standard"

"class"

"dostawca"

"reserve"

SynchronizationType

W przypadku trybów przerywania i izochronologicznego wartości SynchronizationType i UsageType są mapowane na ich nazwy zgodnie ze specyfikacją USB.

Typ wyliczeniowy

"asynchroniczny"

"adaptacyjna"

"synchronous"

TransferResultInfo

Właściwości

  • dane

    SlateBuffer opcjonalnie

    Dane zwrócone w wyniku przesyłania danych wejściowych. undefined do przenoszenia danych wyjściowych.

  • resultCode

    liczba opcjonalnie

    Wartość 0 oznacza, że przeniesienie zostało zakończone. 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,
)

Wykonuje transfer zbiorczy na określonym urządzeniu.

Parametry

Zwroty

  • Promise<TransferResultInfo>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

claimInterface()

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

Żąda interfejsu na urządzeniu USB. Przesyłanie danych do interfejsu lub do powiązanych punktów końcowych wymaga zarezerwowania interfejsu. Tylko jeden uchwyt połączenia może w danym momencie zarezerwować interfejs. Jeśli interfejs został już zarezerwowany, to wywołanie zakończy się niepowodzeniem.

Narzędzie releaseInterface powinno być wywoływane, gdy interfejs nie jest już potrzebny.

Parametry

  • Otwarte połączenie z urządzeniem.

  • interfaceNumber

    liczba

    Interfejs, do którego chcesz zgłosić prawa.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Obietnica<void>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

closeDevice()

Obietnica .
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)

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

Parametry

Zwroty

  • Obietnica<void>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

controlTransfer()

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

Wykonuje przeniesienie ustawień na określonym urządzeniu.

Transfery kontrolne odnoszą się albo do urządzenia, interfejsu, albo punktu końcowego. Przenoszenie do interfejsu lub punktu końcowego wymaga zarezerwowania interfejsu.

Parametry

Zwroty

  • Promise&lt;TransferResultInfo&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

findDevices()

Obietnica .
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)

Wyszukuje urządzenia USB określone przez dostawcę, usługę i (opcjonalnie) identyfikatory interfejsów oraz informacje, czy uprawnienia umożliwiają korzystanie z nich.

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 odpowiada wywołaniu metody getDevices, po której następuje wywołanie openDevice na każdym urządzeniu.

Parametry

Zwroty

  • Promise&lt;ConnectionHandle[]&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

getConfiguration()

Obietnica .
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)

Pobiera deskryptor aktualnie wybranej konfiguracji.

Parametry

Zwroty

  • Promise&lt;ConfigDescriptor&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

getConfigurations()

Obietnica Chrome w wersji 47 lub nowszej
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)

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

Parametry

Zwroty

  • Promise&lt;ConfigDescriptor[]&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

getDevices()

Obietnica .
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)

Wyświetla podłączone urządzenia USB.

Parametry

  • Właściwości do wyszukiwania na urządzeniach docelowych.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (devices: Device[]) => void

Zwroty

  • Obietnica<Urządzenie[]>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

getUserSelectedDevices()

Obietnica .
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)

Wyświetla użytkownikowi selektor urządzeń i zwraca wybrane Device. Jeśli użytkownik anuluje, urządzenia z selektorem będą puste. Wyświetlenie okna wymaga gestu użytkownika. Bez gestu użytkownika wywołanie zwrotne będzie działać tak, jakby użytkownik anulował czynność.

Parametry

  • Konfiguracja okna wyboru urządzeń.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (devices: Device[]) => void

Zwroty

  • Obietnica<Urządzenie[]>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

interruptTransfer()

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

Wykonuje przerywane przesyłanie na określonym urządzeniu.

Parametry

Zwroty

  • Promise&lt;TransferResultInfo&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

isochronousTransfer()

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

Wykonuje przenoszenie izochronologiczne na konkretnym urządzeniu.

Parametry

Zwroty

  • Promise&lt;TransferResultInfo&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

listInterfaces()

Obietnica .
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)

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

Parametry

Zwroty

  • Promise&lt;InterfaceDescriptor[]&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

openDevice()

Obietnica .
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)

Otwiera urządzenie USB zwrócone przez getDevices.

Parametry

Zwroty

  • Promise&lt;ConnectionHandle&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

releaseInterface()

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

Udostępnia interfejs, do którego zgłoszono prawa.

Parametry

  • Otwarte połączenie z urządzeniem.

  • interfaceNumber

    liczba

    Interfejs, który zostanie udostępniony.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Obietnica<void>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

requestAccess()

Obietnica Wycofano
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)

Ta funkcja była związana z ChromeOS i wywołanie jej na innych platformach kończyło się niepowodzeniem. Ta operacja jest teraz domyślnie wykonywana w ramach elementu openDevice i zwróci wartość true na wszystkich platformach.

Jeśli nie zgłoszono praw do danego interfejsu na urządzeniu, prosi o dostęp od brokera uprawnień do urządzenia zarezerwowanego przez Chrome OS.

Parametry

  • urządzenie

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

  • interfaceId

    liczba

    Konkretny interfejs, którego dotyczy prośba.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (success: boolean) => void

    • sukces

      wartość logiczna

Zwroty

  • Promise&lt;boolean&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

resetDevice()

Obietnica .
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)

Próbuje zresetować urządzenie USB. Jeśli reset się nie powiedzie, dany uchwyt połączenia zostanie zamknięty, a urządzenie USB będzie wyglądać na odłączone, a następnie ponownie podłączone. W takim przypadku w celu pobrania urządzenia trzeba ponownie wywołać metodę getDevices lub findDevices.

Parametry

  • Uchwyt połączenia do zresetowania.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    (success: boolean) => void

    • sukces

      wartość logiczna

Zwroty

  • Promise&lt;boolean&gt;

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

setConfiguration()

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

Wybierz konfigurację urządzenia.

Ta funkcja skutecznie resetuje urządzenie, wybierając jedną z dostępnych konfiguracji. Prawidłowe są tylko wartości konfiguracji większe od 0, jednak 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

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Obietnica<void>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

setInterfaceAlternateSetting()

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

Wybiera inne ustawienie w interfejsie zarezerwowanym wcześniej.

Parametry

  • Otwarte połączenie z urządzeniem, na którym zgłoszono prawa do tego interfejsu.

  • interfaceNumber

    liczba

    Interfejs do skonfigurowania.

  • alternateSetting

    liczba

    Alternatywne ustawienie do skonfigurowania.

  • wywołanie zwrotne

    funkcja optional

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Obietnica<void>

    Chrome 116 lub nowszy .

    Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.

Wydarzenia

onDeviceAdded

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

Zdarzenie generowane po dodaniu urządzenia do systemu. Wydarzenia są transmitowane 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ł uprawnienia opcjonalne (patrz permissions.request) lub podczas korzystania z getUserSelectedDevices.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (device: Device) => void

onDeviceRemoved

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

Zdarzenie generowane po usunięciu urządzenia z systemu. Zobacz onDeviceAdded dotyczące tego, które zdarzenia są dostarczane.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (device: Device) => void