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 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
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 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
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()
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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
callback
wyglą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
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. 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
-
urządzenie
-