Opis
Interfejs API chrome.usb
umożliwia interakcję 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. W tym przypadku standardowe parametry wywołania zwrotnego nie będą określone.
Uprawnienia
usb
Typy
ConfigDescriptor
Właściwości
-
aktywna
boolean
Chrome 47 i nowsze wersjeCzy jest to konfiguracja aktywna?
-
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 przez to urządzenie w miliampach (mA).
-
remoteWakeup
boolean
Urządzenie obsługuje zdalne wybudzanie.
-
selfPowered
boolean
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 zgłoszone interfejsy i 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
Tablica SlateBuffer opcjonalna
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. -
length
Liczba opcjonalnie
Maksymalna liczba bajtów do odebrania (wymagana tylko w przypadku transferów danych wejściowych).
-
obdarowany
Cel transferu. Cel podany przez
index
musi zostać zarezerwowany, jeśli"interface"
lub"endpoint"
. -
Poproś
Liczba
Pole
bRequest
: patrz specyfikacja specyfikacji uniwersalnej magistrali szeregowej w wersji 1.1 § 9.3. -
requestType
Typ żądania.
-
przerwa w grze
Liczba opcjonalnie
Chrome 43 i nowsze wersjeLimit czasu żądania (w milisekundach). Wartość domyślna
0
oznacza brak limitu czasu. -
value
Liczba
Pole
wValue
patrz Ibid.
Device
Właściwości
-
urządzenie
Liczba
Nieprzezroczysty identyfikator urządzenia USB. Pozostanie niezmieniona, dopóki urządzenie nie zostanie odłączone.
-
manufacturerName
string,
Chrome 46 i nowsze wersjeCiąg znaków iManufacturer odczytany z urządzenia (jeśli jest dostępny).
-
productId
Liczba
Identyfikator produktu.
-
productName
string,
Chrome 46 i nowsze wersjeCiąg iProduct odczytywany z urządzenia (jeśli jest dostępny).
-
serialNumber
string,
Chrome 46 i nowsze wersjeCiąg iSerialNumber odczytywany z urządzenia (jeśli jest dostępny).
-
vendorId
Liczba
Identyfikator dostawcy urządzenia.
-
wersja
Liczba
Chrome 51 i nowsze wersjeWersja urządzenia (pole bcdDevice).
DeviceFilter
Właściwości
-
interfaceClass
Liczba opcjonalnie
Klasa interfejsu USB, pasuje do dowolnego interfejsu na urządzeniu.
-
interfaceProtocol
Liczba opcjonalnie
Protokół interfejsu USB, sprawdzany 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 na urządzeniu – sprawdzany tylko wtedy, gdy identyfikator dostawcy jest taki sam.
-
vendorId
Liczba opcjonalnie
Identyfikator dostawcy urządzenia.
DevicePromptOptions
Właściwości
-
filtry
DeviceFilter[] opcjonalny
Przefiltruj listę urządzeń prezentowanych użytkownikowi. Jeśli podasz wiele filtrów, wyświetlą się urządzenia pasujące do dowolnego z filtrów.
-
Wiele
wartość logiczna opcjonalna
Zezwalaj użytkownikowi na wybranie kilku urządzeń.
Direction
Direction, Recipient, RequestType i TransferType są mapowane na swoje nazwy w specyfikacji USB.
Enum
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
Liczba opcjonalnie
Okres odpytywania (tylko przerwy i izochroniczne).
-
synchronizacja
Opcjonalny SynchronizationType.
Tryb synchronizacji transferu (tylko izochroniczny).
-
typ
Typ transferu.
-
wykorzystanie
UsageType opcjonalnie
Podpowiedź dotycząca użycia punktu końcowego.
EnumerateDevicesAndRequestAccessOptions
Właściwości
-
interfaceId
Liczba opcjonalnie
Identyfikator interfejsu, do którego chcesz uzyskać dostęp. Funkcja dostępna tylko w systemie operacyjnym Chrome. 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 filtrów. Jeśli lista filtrów będzie pusta, zobaczysz 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
Tablica SlateBuffer opcjonalna
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ć zarezerwowany.
-
length
Liczba opcjonalnie
Maksymalna liczba bajtów do odebrania (wymagana tylko w przypadku transferów danych wejściowych).
-
przerwa w grze
Liczba opcjonalnie
Chrome 43 i nowsze wersjeLimit czasu żądania (w milisekundach). Wartość domyślna
0
oznacza brak limitu czasu.
InterfaceDescriptor
Właściwości
-
alternateSetting
Liczba
Numer alternatywnego ustawienia interfejsu (wartość domyślna to
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 transferze.
-
transferInfo
Parametry transferu. Długość transferu lub bufor danych określone w tym bloku parametrów są dzielone wzdłuż granic
packetLength
, aby utworzyć pojedyncze pakiety transferu.
Recipient
Enum
RequestType
Enum
"class"
SynchronizationType
W przypadku trybów przerwanych i izoochronnych wartości SynchronizationType i UsageType są mapowane na ich nazwy w specyfikacji USB.
Enum
TransferResultInfo
Właściwości
-
dane
Tablica SlateBuffer opcjonalna
Dane zwrócone przez transfer danych wejściowych.
undefined
na potrzeby transferów danych wyjściowych. -
resultCode
Liczba opcjonalnie
Wartość
0
oznacza, że przeniesienie zostało zakończone. Inne wartości wskazują na niepowodzenie.
TransferType
Enum
"control"
"bulk"
UsageType
Enum
"explicitFeedback"
"notification"
Metody
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Wykonuje przesyłanie zbiorcze na określonym urządzeniu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
Parametry przenoszenia.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Akcje powrotne
-
Promise<TransferResultInfo>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
deklaruje dostęp do interfejsu na urządzeniu USB. Zanim dane będą mogły zostać przeniesione do interfejsu lub powiązanych punktów końcowych, trzeba uzyskać dostęp do tego interfejsu. Tylko 1 nick połączenia może zgłosić prawa do interfejsu w danym momencie. Jeśli dostęp do interfejsu został już zarezerwowany, to wywołanie się nie uda.
Narzędzie releaseInterface
należy wywołać, gdy interfejs nie jest już potrzebny.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
interfaceNumber
Liczba
Interfejs, który chcesz zarezerwować.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Akcje powrotne
-
Promise<void>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. 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 to bezpieczna operacja, ale nie powoduje żadnych działań.
Parametry
-
nick
ConnectionHandle
do zamknięcia. -
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Akcje powrotne
-
Promise<void>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
)
Przeprowadza kontrolę nad transferem na określonym urządzeniu.
Przenoszenie elementów sterujących odnosi się do urządzenia, interfejsu lub punktu końcowego. Przenoszenie do interfejsu lub punktu końcowego wymaga rezerwacji interfejsu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Akcje powrotne
-
Promise<TransferResultInfo>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
)
Znajduje urządzenia USB określone przez identyfikatory dostawcy, produktu i (opcjonalnie) interfejsu oraz czy uprawnienia pozwalają na ich otwarcie do użycia.
Jeśli żądanie dostępu zostanie odrzucone lub nie uda się otworzyć urządzenia, uchwyt połączenia nie zostanie utworzony ani zwrócony.
Wywołanie tej metody jest równoważne z wywołaniem metody getDevices
, a następnie instrukcji openDevice
w przypadku każdego urządzenia.
Parametry
-
Właściwości do wyszukiwania na urządzeniach docelowych.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(handles: ConnectionHandle[]) => void
-
uchwyty
-
Akcje powrotne
-
Promise<ConnectionHandle[]>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
)
Pobiera deskryptor konfiguracji dla obecnie wybranej konfiguracji.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(config: ConfigDescriptor) => void
-
konfiguracja
-
Akcje powrotne
-
Promise<ConfigDescriptor>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
)
Zwraca pełny zbiór deskryptorów konfiguracji urządzenia.
Parametry
-
urządzenie
Device
, z którego pochodzą deskryptory. -
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(configs: ConfigDescriptor[]) => void
-
Konfiguracje
-
Akcje powrotne
-
Promise<ConfigDescriptor[]>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
)
Określa podłączone urządzenia USB.
Parametry
-
Opcje
Właściwości do wyszukiwania na urządzeniach docelowych.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(devices: Device[]) => void
-
urządzenia
-
Akcje powrotne
-
Obietnica<urządzenie[]>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
)
Wyświetla użytkownikowi selektor urządzenia i zwraca wybrane elementy (Device
). Jeśli użytkownik anuluje, selektory będą puste. Do wyświetlenia okna wymagany jest gest użytkownika. Bez gestu użytkownika wywołanie zwrotne będzie działać tak, jakby użytkownik je anulował.
Parametry
-
Opcje
Konfiguracja okna wyboru urządzeń.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(devices: Device[]) => void
-
urządzenia
-
Akcje powrotne
-
Obietnica<urządzenie[]>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
)
Wykonuje przerwanie przesyłania na określonym urządzeniu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
Parametry przenoszenia.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Akcje powrotne
-
Promise<TransferResultInfo>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
)
Wykonuje transfer izochroniczny na konkretnym urządzeniu.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
transferInfo
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Akcje powrotne
-
Promise<TransferResultInfo>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. 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 opcjonalnie
Parametr
callback
wygląda tak:(descriptors: InterfaceDescriptor[]) => void
-
descriptors
-
Akcje powrotne
-
Promise<InterfaceDescriptor[]>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. 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
, aby się otworzyć. -
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(handle: ConnectionHandle) => void
-
nick
-
Akcje powrotne
-
Promise<ConnectionHandle>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
)
Zwalnia zadeklarowany interfejs.
Parametry
-
nick
Otwarte połączenie z urządzeniem.
-
interfaceNumber
Liczba
Interfejs, który zostanie udostępniony.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Akcje powrotne
-
Promise<void>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
)
Ta funkcja dotyczyła tylko ChromeOS, a wywołanie jej na innych platformach kończyło się niepowodzeniem. Ta operacja jest teraz wykonywana domyślnie w ramach funkcji openDevice
i zwraca wartość true
na wszystkich platformach.
Wysyła do brokera uprawnień dostęp do urządzenia zarezerwowanego przez system operacyjny Chrome, jeśli dany interfejs na urządzeniu nie został zarezerwowany.
Parametry
-
urządzenie
Device
, do którego należy poprosić o dostęp. -
interfaceId
Liczba
Żądany interfejs.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(success: boolean) => void
-
sukces
boolean
-
Akcje powrotne
-
Promise<boolean>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
)
Próbuje zresetować urządzenie USB. Jeśli resetowanie się nie uda, podany uchwyt połączenia zostanie zamknięty, a urządzenie USB będzie wyglądać tak, jakby zostało odłączone, a następnie podłączone ponownie. W takim przypadku w celu pozyskania urządzenia należy wywołać jeszcze raz getDevices
lub findDevices
.
Parametry
-
nick
Uchwyt połączenia do zresetowania.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:(success: boolean) => void
-
sukces
boolean
-
Akcje powrotne
-
Promise<boolean>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
)
Wybierz konfigurację urządzenia.
Ta funkcja powoduje zresetowanie urządzenia przez wybranie jednej z dostępnych konfiguracji. Prawidłowe są tylko wartości konfiguracyjne większe niż 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 opcjonalnie
Parametr
callback
wygląda tak:() => void
Akcje powrotne
-
Promise<void>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. Inne platformy muszą używać wywołań zwrotnych.
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
)
Wybiera alternatywne ustawienie interfejsu, do którego zgłoszono prawa.
Parametry
-
nick
Otwarte połączenie z urządzeniem, do którego zgłoszono prawa do tego interfejsu.
-
interfaceNumber
Liczba
Interfejs do skonfigurowania.
-
alternateSetting
Liczba
Ustawienie alternatywne do skonfigurowania.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:() => void
Akcje powrotne
-
Promise<void>
Chrome 116 i nowsze wersjeObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych platform. 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ł opcjonalne uprawnienia (patrz permissions.request
) lub za pomocą 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, gdy urządzenie zostanie usunięte z systemu. Zobacz onDeviceAdded
, w przypadku których zdarzenia są dostarczane.
Parametry
-
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(device: Device) => void
-
urządzenie
-