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
usbDostępność
Typy
ConfigDescriptor
Właściwości
-
aktywna
wartość logiczna
Chrome 47 lub nowsza wersjaCzy 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 przezindexmusi 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 wersjaLimit czasu żądania (w milisekundach). Wartość domyślna
0oznacza 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 wersjaCiąg iManufacturer odczytany z urządzenia, jeśli jest dostępny.
-
productId
liczba
Identyfikator produktu.
-
nazwaProduktu
tekst
Chrome 46 lub nowsza wersjaCiąg iProduct odczytany z urządzenia, jeśli jest dostępny.
-
serialNumber
tekst
Chrome 46 lub nowsza wersjaCiąg iSerialNumber odczytany z urządzenia (jeśli jest dostępny).
-
vendorId
liczba
Identyfikator dostawcy urządzenia.
-
wersja
liczba
Chrome 51 lub nowsza wersjaWersja 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
SynchronizationType opcjonalne
Tryb synchronizacji transferu (tylko izochroniczny).
-
typ
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
WycofaneOdpowiednik ustawienia
DeviceFilter.productId. -
vendorId
number optional
WycofaneOdpowiednik 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 wersjaLimit czasu żądania (w milisekundach). Wartość domyślna
0oznacza 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.
undefinedza transfery wychodzące. -
resultCode
number optional
Wartość
0oznacza, ż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()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Wykonuje zbiorcze przenoszenie na określonym urządzeniu.
Parametry
-
nick
otwarte połączenie z urządzeniem,
-
transferInfo
Parametry transferu.
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
claimInterface()
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
-
nick
otwarte połączenie z urządzeniem,
-
interfaceNumber
liczba
Interfejs, który ma zostać przejęty.
-
callback
function opcjonalne
Parametr
callbackwygląda tak:() => void
Zwroty
-
thought Promise<void>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
closeDevice()
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
-
nick
ConnectionHandle, aby zamknąć. -
callback
function opcjonalne
Parametr
callbackwygląda tak:() => void
Zwroty
-
thought Promise<void>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
controlTransfer()
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
-
nick
otwarte połączenie z urządzeniem,
-
transferInfo
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
findDevices()
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
-
Właściwości, które mają być wyszukiwane na urządzeniach docelowych.
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(handles: ConnectionHandle[]) => void
-
nicki
-
Zwroty
-
Promise<ConnectionHandle[]>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
): Promise<ConfigDescriptor>
Pobiera deskryptor konfiguracji dla aktualnie wybranej konfiguracji.
Parametry
-
nick
otwarte połączenie z urządzeniem,
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(config: ConfigDescriptor) => void
-
konfiguracja
-
Zwroty
-
Promise<ConfigDescriptor>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
): Promise<ConfigDescriptor[]>
Zwraca pełny zestaw deskryptorów konfiguracji urządzenia.
Parametry
-
urządzenie
Device, z którego mają być pobierane deskryptory. -
callback
function opcjonalne
Parametr
callbackwygląda tak:(configs: ConfigDescriptor[]) => void
-
konfiguracje
-
Zwroty
-
Promise<ConfigDescriptor[]>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
): Promise<Device[]>
Wyświetla listę podłączonych urządzeń USB.
Parametry
Zwroty
-
Promise<Device[]>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
getUserSelectedDevices()
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
Zwroty
-
Promise<Device[]>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Wykonuje transfer przerwania na określonym urządzeniu.
Parametry
-
nick
otwarte połączenie z urządzeniem,
-
transferInfo
Parametry transferu.
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Wykonuje transfer izochroniczny na określonym urządzeniu.
Parametry
-
nick
otwarte połączenie z urządzeniem,
-
transferInfo
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
): Promise<InterfaceDescriptor[]>
Wyświetla listę wszystkich interfejsów na urządzeniu USB.
Parametry
-
nick
otwarte połączenie z urządzeniem,
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(descriptors: InterfaceDescriptor[]) => void
-
deskryptory
-
Zwroty
-
Promise<InterfaceDescriptor[]>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
): Promise<ConnectionHandle>
Otwiera urządzenie USB zwrócone przez getDevices.
Parametry
-
urządzenie
Device, który chcesz otworzyć. -
callback
function opcjonalne
Parametr
callbackwygląda tak:(handle: ConnectionHandle) => void
-
nick
-
Zwroty
-
Promise<ConnectionHandle>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
Zwalnia interfejs, do którego zgłoszono roszczenie.
Parametry
-
nick
otwarte połączenie z urządzeniem,
-
interfaceNumber
liczba
Interfejs, który ma zostać zwolniony.
-
callback
function opcjonalne
Parametr
callbackwygląda tak:() => void
Zwroty
-
thought Promise<void>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
requestAccess()
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
callbackwygląda tak:(success: boolean) => void
-
sukces
wartość logiczna
-
Zwroty
-
Promise<boolean>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
resetDevice()
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
-
nick
Uchwyt połączenia do zresetowania.
-
callback
function opcjonalne
Parametr
callbackwygląda tak:(success: boolean) => void
-
sukces
wartość logiczna
-
Zwroty
-
Promise<boolean>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
setConfiguration()
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
-
nick
otwarte połączenie z urządzeniem,
-
configurationValue
liczba
-
callback
function opcjonalne
Parametr
callbackwygląda tak:() => void
Zwroty
-
thought Promise<void>
Chrome 116 lub nowsza wersjaObiekty Promise są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Na innych platformach należy używać wywołań zwrotnych.
setInterfaceAlternateSetting()
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
-
nick
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
callbackwygląda tak:() => void
Zwroty
-
thought Promise<void>
Chrome 116 lub nowsza wersjaObiekty 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
callbackwygląda tak:(device: Device) => void
-
urządzenie
-
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
callbackwygląda tak:(device: Device) => void
-
urządzenie
-