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
usbTypy
ConfigDescriptor
Właściwości
-
aktywna
Wartość logiczna
Chrome 47 lub nowszaCzy 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 przezindex. -
żądanie
liczba
Pole
bRequest, patrz Universal Serial Bus Specification Revision 1.1 § 9.3. -
requestType
Typ żądania.
-
czas oczekiwania
number opcjonalny
Chrome 43 lub nowszyLimit 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
Nieprzejrzysty identyfikator urządzenia USB. Pozostaje on niezmieniony, dopóki urządzenie nie zostanie odłączone.
-
manufacturerName
ciąg znaków
Chrome 46 lub nowszaCiąg iManufacturer odczytany z urządzenia, jeśli jest dostępny.
-
productId
liczba
Identyfikator produktu.
-
nazwaProduktu
ciąg znaków
Chrome 46 lub nowszaCiąg iProduct odczytany z urządzenia, jeśli jest dostępny.
-
serialNumber
ciąg znaków
Chrome 46 lub nowszaCiąg iSerialNumber odczytany z urządzenia (jeśli jest dostępny).
-
vendorId
liczba
Identyfikator dostawcy urządzenia.
-
wersja
liczba
Chrome 51 lub nowszaWersja 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,
SynchronizationType opcjonalny
Tryb synchronizacji przesyłania (tylko izochroniczny).
-
typ
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
WycofanoOdpowiednik ustawienia
DeviceFilter.productId. -
vendorId
number opcjonalny
WycofanoOdpowiednik 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 nowszyLimit 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
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.
undefinedw przypadku transferów wychodzących. -
resultCode
number opcjonalny
Wartość
0oznacza, ż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()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Wykonuje transfer zbiorczy na określonym urządzeniu.
Parametry
-
nick
otwarte połączenie z urządzeniem;
-
transferInfo
Parametry przesyłania.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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ę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
-
nick
otwarte połączenie z urządzeniem;
-
interfaceNumber
liczba
Interfejs, do którego chcesz zgłosić prawa.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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
funkcja opcjonalna
Parametr
callbackwygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
controlTransfer()
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
-
nick
otwarte połączenie z urządzeniem;
-
transferInfo
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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ównoznaczne z wywołaniem getDevices, a następnie openDevice na każdym urządzeniu.
Parametry
-
Właściwości, których należy szukać na urządzeniach docelowych.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(handles: ConnectionHandle[]) => void
-
nicki,
-
Zwroty
-
Promise<ConnectionHandle[]>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
): Promise<ConfigDescriptor>
Pobiera deskryptor konfiguracji dla obecnie wybranej konfiguracji.
Parametry
-
nick
otwarte połączenie z urządzeniem;
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(config: ConfigDescriptor) => void
-
konfiguracja
-
Zwroty
-
Promise<ConfigDescriptor>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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
funkcja opcjonalna
Parametr
callbackwygląda tak:(configs: ConfigDescriptor[]) => void
-
konfiguracje,
-
Zwroty
-
Promise<ConfigDescriptor[]>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
): Promise<Device[]>
Wylicza podłączone urządzenia USB.
Parametry
-
Opcje
Właściwości, których należy szukać na urządzeniach docelowych.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(devices: Device[]) => void
-
urządzenia
-
Zwroty
-
Promise<Device[]>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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 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
-
Opcje
Konfiguracja okna wyboru urządzenia.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(devices: Device[]) => void
-
urządzenia
-
Zwroty
-
Promise<Device[]>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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 przesyłania.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
Przeprowadza transfer izochroniczny na określonym urządzeniu.
Parametry
-
nick
otwarte połączenie z urządzeniem;
-
transferInfo
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(info: TransferResultInfo) => void
-
informacje
-
Zwroty
-
Promise<TransferResultInfo>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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
funkcja opcjonalna
Parametr
callbackwygląda tak:(descriptors: InterfaceDescriptor[]) => void
-
deskryptory,
-
Zwroty
-
Promise<InterfaceDescriptor[]>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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, aby otworzyć. -
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(handle: ConnectionHandle) => void
-
nick
-
Zwroty
-
Promise<ConnectionHandle>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
Zwalnia interfejs objęty roszczeniem.
Parametry
-
nick
otwarte połączenie z urządzeniem;
-
interfaceNumber
liczba
Interfejs, który ma zostać zwolniony.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
requestAccess()
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
callbackwygląda tak:(success: boolean) => void
-
sukces
Wartość logiczna
-
Zwroty
-
Promise<boolean>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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, 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
-
nick
Uchwyt połączenia do zresetowania.
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:(success: boolean) => void
-
sukces
Wartość logiczna
-
Zwroty
-
Promise<boolean>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą 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. 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
-
nick
otwarte połączenie z urządzeniem;
-
configurationValue
liczba
-
callback
funkcja opcjonalna
Parametr
callbackwygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 116 lub nowszaObietnice są obsługiwane tylko w przypadku platformy Manifest V3 i nowszych. Inne platformy muszą używać wywołań zwrotnych.
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
): Promise<void>
Wybiera alternatywne ustawienie w przypadku wcześniej zgłoszonego interfejsu.
Parametry
-
nick
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
callbackwygląda tak:() => void
Zwroty
-
Promise<void>
Chrome 116 lub nowszaObietnice 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
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. Więcej informacji o tym, które zdarzenia są dostarczane, znajdziesz w sekcji onDeviceAdded.
Parametry
-
callback
funkcja
Parametr
callbackwygląda tak:(device: Device) => void
-
urządzenie
-