chrome.usb

Opis

Użyj interfejsu chrome.usb API, aby korzystać z podłączonych urządzeń USB. Ten interfejs API umożliwia dostęp do operacji USB w kontekście aplikacji. Za jego pomocą 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

Typy

ConfigDescriptor

Właściwości

  • aktywna

    Wartość logiczna

    Chrome 47 lub nowsza

    Czy to jest aktywna konfiguracja?

  • configurationValue

    liczba

    Numer konfiguracji.

  • opis

    string opcjonalny

    Opis konfiguracji.

  • extra_data

    ArrayBuffer

    Dodatkowe dane opisowe 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 jest zasilane samodzielnie.

ConnectionHandle

Właściwości

  • nick

    liczba

    Nieprzezroczysty uchwyt reprezentujący to połączenie z urządzeniem USB oraz wszystkie powiązane interfejsy i oczekujące transfery. Za każdym razem, gdy urządzenie jest otwierane, tworzony jest nowy uchwyt. Uchwyt połączenia różni się od 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 przesyłania danych wyjściowych).

  • direction

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

  • indeks

    liczba

    Pole wIndex, patrz Ibid.

  • długość

    number opcjonalny

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

  • odbiorca

    Miejsce docelowe przeniesienia. Jeśli wartość "interface" lub "endpoint", należy zgłosić roszczenie do miejsca docelowego podanego przez index.

  • żądanie

    liczba

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

  • requestType

    Typ żądania.

  • czas oczekiwania

    number opcjonalny

    Chrome 43 lub nowszy

    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

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

  • manufacturerName

    ciąg znaków

    Chrome 46 lub nowsza

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

  • productId

    liczba

    Identyfikator produktu.

  • nazwaProduktu

    ciąg znaków

    Chrome 46 lub nowsza

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

  • serialNumber

    ciąg znaków

    Chrome 46 lub nowsza

    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 urządzenia (pole bcdDevice).

DeviceFilter

Właściwości

  • interfaceClass

    number opcjonalny

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

  • interfaceProtocol

    number opcjonalny

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

  • interfaceSubclass

    number opcjonalny

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

  • productId

    number opcjonalny

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

  • vendorId

    number opcjonalny

    Identyfikator dostawcy urządzenia.

DevicePromptOptions

Właściwości

  • filtry

    DeviceFilter[] opcjonalnie

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

  • wiele

    wartość logiczna opcjonalna

    Zezwól użytkownikowi na wybranie kilku urządzeń.

Direction

Atrybuty Direction, Recipient, RequestType i TransferType są mapowane na atrybuty o tych samych nazwach w specyfikacji USB.

Typ wyliczeniowy

"in"

„out”

EndpointDescriptor

Właściwości

  • adres

    liczba

    Adres punktu końcowego.

  • direction

    Kierunek przenoszenia.

  • extra_data

    ArrayBuffer

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

  • maximumPacketSize

    liczba

    Maksymalny rozmiar pakietu.

  • pollingInterval

    number opcjonalny

    Odstęp sondowania (tylko w przypadku przesyłania przerywanego i izochronicznego).

  • synchronizacja,

    Tryb synchronizacji przesyłania (tylko izochroniczny).

  • Typ przekierowania.

  • użycie

    UsageType opcjonalny

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

EnumerateDevicesAndRequestAccessOptions

Właściwości

  • interfaceId

    number opcjonalny

    Identyfikator interfejsu, do którego chcesz uzyskać 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[] opcjonalnie

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

  • productId

    number opcjonalny

    Wycofano

    Odpowiednik ustawienia DeviceFilter.productId.

  • vendorId

    number opcjonalny

    Wycofano

    Odpowiednik ustawienia DeviceFilter.vendorId.

GenericTransferInfo

Właściwości

  • dane

    ArrayBuffer opcjonalny

    Dane do przesłania (wymagane tylko w przypadku 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ć objęty roszczeniem.

  • długość

    number opcjonalny

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

  • czas oczekiwania

    number opcjonalny

    Chrome 43 lub nowszy

    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

    string 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 transferze.

  • transferInfo

    Przekaż parametry. Długość transferu lub bufor danych określony w tym bloku parametrów jest dzielony 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 przerywanego i izochronicznego pola 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 przeniesienie danych wejściowych. undefined w przypadku transferów wychodzących.

  • resultCode

    number opcjonalny

    Wartość 0 oznacza, że przeniesienie się powiodło. Inne wartości oznaczają błąd.

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 transfer zbiorczy na określonym urządzeniu.

Parametry

Zwroty

  • Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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ędzie można przenieść do interfejsu lub powiązanych punktów końcowych, interfejs musi zostać przejęty. W danym momencie tylko 1 uchwyt połączenia może zgłosić interfejs. Jeśli interfejs jest już zajęty, połączenie 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, do którego chcesz zgłosić prawa.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Promise<void>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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

  • Promise<void>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

controlTransfer()

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

Wykonuje transfer sterowania na określonym urządzeniu.

Przeniesienie kontroli może dotyczyć urządzenia, interfejsu lub punktu końcowego. Przeniesienie na interfejs lub do punktu końcowego wymaga przejęcia interfejsu.

Parametry

Zwroty

  • Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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ównoznaczne z wywołaniem getDevices, a następnie openDevice na każdym urządzeniu.

Parametry

Zwroty

  • Promise<ConnectionHandle[]>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

getConfiguration()

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

Pobiera deskryptor konfiguracji dla obecnie wybranej konfiguracji.

Parametry

Zwroty

  • Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

getDevices()

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

Wylicza podłączone urządzenia USB.

Parametry

  • Właściwości, których należy szukać na urządzeniach docelowych.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    (devices: Device[]) => void

Zwroty

  • Promise<Device[]>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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 Device. Jeśli użytkownik anuluje wybór, lista urządzeń będzie pusta. Aby wyświetlić okno, użytkownik musi wykonać gest. Bez gestu użytkownika wywołanie zwrotne zostanie uruchomione tak, jakby użytkownik anulował działanie.

Parametry

  • Konfiguracja okna wyboru urządzenia.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    (devices: Device[]) => void

Zwroty

  • Promise<Device[]>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

isochronousTransfer()

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

Przeprowadza transfer izochroniczny na określonym urządzeniu.

Parametry

Zwroty

  • Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

releaseInterface()

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

Zwalnia interfejs objęty roszczeniem.

Parametry

  • otwarte połączenie z urządzeniem;

  • interfaceNumber

    liczba

    Interfejs, który ma zostać zwolniony.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Promise<void>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.

requestAccess()

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

Ta funkcja była specyficzna dla ChromeOS, a wywołanie jej na innych platformach powodowało błąd. Ta operacja jest teraz wykonywana niejawnie w ramach funkcji openDevice, a ta funkcja będzie zwracać wartość true na wszystkich platformach.

Wysyła do brokera uprawnień żądanie dostępu do urządzenia przypisanego do ChromeOS, jeśli dany interfejs na urządzeniu nie jest przypisany.

Parametry

  • urządzenie

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

  • interfaceId

    liczba

    Konkretny interfejs, którego dotyczy prośba.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    (success: boolean) => void

    • sukces

      Wartość logiczna

Zwroty

  • Promise<boolean>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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, podany uchwyt połączenia zostanie zamknięty, a urządzenie USB zostanie odłączone i ponownie podłączone. W takim przypadku należy ponownie wywołać funkcję getDevices lub findDevices, aby uzyskać urządzenie.

Parametry

  • Uchwyt połączenia do zresetowania.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    (success: boolean) => void

    • sukces

      Wartość logiczna

Zwroty

  • Promise<boolean>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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. Prawidłowe są tylko wartości konfiguracji większe niż 0, ale niektóre wadliwe urządzenia mają działającą konfigurację 0, więc ta wartość jest dozwolona.

Parametry

  • otwarte połączenie z urządzeniem;

  • configurationValue

    liczba

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Promise<void>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy 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,
)
: Promise<void>

Wybiera alternatywne ustawienie w przypadku wcześniej zgłoszonego interfejsu.

Parametry

  • Otwarte połączenie z urządzeniem, na którym ten interfejs został zgłoszony.

  • interfaceNumber

    liczba

    Interfejs do skonfigurowania.

  • alternateSetting

    liczba

    Alternatywne ustawienie do skonfigurowania.

  • callback

    funkcja opcjonalna

    Parametr callback wygląda tak:

    () => void

Zwroty

  • Promise<void>

    Chrome 116 lub nowsza

    Obietnice są obsługiwane tylko w przypadku platformy 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ą 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 uprawnienia (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. Więcej informacji o tym, które zdarzenia są dostarczane, znajdziesz w sekcji onDeviceAdded.

Parametry

  • callback

    funkcja

    Parametr callback wygląda tak:

    (device: Device) => void