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 windex
. -
żą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
Opcjonalny SynchronizationType
Tryb synchronizacji transferu (tylko w trybie odstępu czasowego).
-
typ
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
WycofanoOdpowiednik ustawienia
DeviceFilter.productId
. -
vendorId
liczba opcjonalnie
WycofanoOdpowiednik 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()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Wykonuje transfer zbiorczy na określonym urządzeniu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
Parametry przenoszenia.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
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()
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
-
nick
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()
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
-
nick
ConnectionHandle
do zamknięcia. -
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.
controlTransfer()
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
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
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.
findDevices()
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
-
Właściwości do wyszukiwania na urządzeniach docelowych.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(handles: ConnectionHandle[]) => void
-
uchwyty
-
Zwroty
-
Promise<ConnectionHandle[]>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
)
Pobiera deskryptor aktualnie wybranej konfiguracji.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(config: ConfigDescriptor) => void
-
konfiguracja
-
Zwroty
-
Promise<ConfigDescriptor>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
)
Zwraca pełny zestaw deskryptorów konfiguracji urządzenia.
Parametry
-
urządzenie
Device
, z którego mają zostać pobrane deskryptory. -
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(configs: ConfigDescriptor[]) => void
-
Konfiguracje
-
Zwroty
-
Promise<ConfigDescriptor[]>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
)
Wyświetla podłączone urządzenia USB.
Parametry
-
Opcje
Właściwości do wyszukiwania na urządzeniach docelowych.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(devices: Device[]) => void
-
urządzenia
-
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()
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
-
Opcje
Konfiguracja okna wyboru urządzeń.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(devices: Device[]) => void
-
urządzenia
-
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()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Wykonuje przerywane przesyłanie na określonym urządzeniu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
Parametry przenoszenia.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
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.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
)
Wykonuje przenoszenie izochronologiczne na konkretnym urządzeniu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
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.
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
)
Wyświetla listę wszystkich interfejsów na urządzeniu USB.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(descriptors: InterfaceDescriptor[]) => void
-
deskryptory
-
Zwroty
-
Promise<InterfaceDescriptor[]>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
)
Otwiera urządzenie USB zwrócone przez getDevices
.
Parametry
-
urządzenie
Device
do otwarcia. -
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(handle: ConnectionHandle) => void
-
nick
-
Zwroty
-
Promise<ConnectionHandle>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Udostępnia interfejs, do którego zgłoszono prawa.
Parametry
-
nick
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()
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<boolean>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
resetDevice()
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
-
nick
Uchwyt połączenia do zresetowania.
-
wywołanie zwrotne
funkcja optional
Parametr
callback
wygląda tak:(success: boolean) => void
-
sukces
wartość logiczna
-
Zwroty
-
Promise<boolean>
Chrome 116 lub nowszy .Obietnice są obsługiwane tylko na platformie Manifest V3 i nowszych, inne platformy muszą używać wywołań zwrotnych.
setConfiguration()
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
-
nick
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()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
)
Wybiera inne ustawienie w interfejsie zarezerwowanym wcześniej.
Parametry
-
nick
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
-
urządzenie
-
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
-
urządzenie
-