说明
使用 chrome.usb API 与已连接的 USB 设备进行互动。此 API 可在应用上下文中提供对 USB 操作的访问权限。借助此 API,应用可以充当硬件设备的驱动程序。此 API 生成的错误通过设置 runtime.lastError 并执行函数的常规回调来报告。在这种情况下,回调的常规参数将处于未定义状态。
权限
usb类型
ConfigDescriptor
属性
- 
    活跃布尔值 Chrome 47 及更高版本相应配置是否处于有效状态? 
- 
    configurationValue数值 配置编号。 
- 
    说明字符串(选填) 配置说明。 
- 
    extra_dataArrayBuffer 与此配置关联的额外描述符数据。 
- 
    接口InterfaceDescriptorInterfaceDescriptor[] 可用的界面。 
- 
    maxPower数值 相应设备所需的最大功率(以毫安 [mA] 为单位)。 
- 
    remoteWakeup布尔值 设备支持远程唤醒。 
- 
    selfPowered布尔值 设备由自身供电。 
ConnectionHandle
属性
- 
    句柄数值 一个不透明的句柄,表示与 USB 设备的连接以及所有关联的声明接口和待处理的传输。每次打开设备时,系统都会创建一个新的句柄。连接句柄与 Device.device不同。
- 
    productId数值 商品 ID。 
- 
    vendorId数值 设备供应商 ID。 
ControlTransferInfo
属性
- 
    数据ArrayBuffer 可选 要传输的数据(仅输出传输需要)。 
- 
    方向转移方向( "in"或"out")。
- 
    索引数值 wIndex字段,请参阅 Ibid。
- 
    长度number 可选 要接收的字节数上限(仅输入转移需要)。 
- 
    收件人转移目标。如果值为 "interface"或"endpoint",则必须声明index给定的目标。
- 
    request数值 bRequest字段,请参阅《通用串行总线规范修订版 1.1》第 9.3 节。
- 
    requestType请求类型。 
- 
    超时number 可选 Chrome 43 及更高版本请求超时时间(以毫秒为单位)。默认值 0表示无超时。
- 
    值数值 wValue字段,请参阅 Ibid。
Device
属性
- 
    设备数值 USB 设备的不透明 ID。在设备拔下之前,该设置会保持不变。 
- 
    manufacturerName字符串 Chrome 46 及更高版本从设备读取的 iManufacturer 字符串(如果有)。 
- 
    productId数值 商品 ID。 
- 
    productName字符串 Chrome 46 及更高版本从设备读取的 iProduct 字符串(如果有)。 
- 
    serialNumber字符串 Chrome 46 及更高版本从设备读取的 iSerialNumber 字符串(如有)。 
- 
    vendorId数值 设备供应商 ID。 
- 
    版本数值 Chrome 51 及更高版本设备版本(bcdDevice 字段)。 
DeviceFilter
属性
- 
    interfaceClassnumber 可选 USB 接口类,与设备上的任何接口匹配。 
- 
    interfaceProtocolnumber 可选 USB 接口协议,仅当接口子类匹配时才检查。 
- 
    interfaceSubclassnumber 可选 USB 接口子类,仅在接口类匹配时检查。 
- 
    productIdnumber 可选 设备产品 ID,仅在供应商 ID 匹配时进行检查。 
- 
    vendorIdnumber 可选 设备供应商 ID。 
DevicePromptOptions
属性
- 
    过滤器DeviceFilter[] 可选 过滤向用户显示的设备列表。如果提供了多个过滤条件,系统将显示与任何过滤条件匹配的设备。 
- 
    多个布尔值(可选) 允许用户选择多个设备。 
Direction
Direction、Recipient、RequestType 和 TransferType 都映射到 USB 规范中的同名属性。
枚举
“in” 
 
“out” 
 
EndpointDescriptor
属性
- 
    地址数值 端点地址。 
- 
    方向转移方向。 
- 
    extra_dataArrayBuffer 与此端点关联的额外描述符数据。 
- 
    maximumPacketSize数值 数据包大小上限。 
- 
    pollingIntervalnumber 可选 轮询间隔(仅限中断和等时)。 
- 
    同步传输同步模式(仅限等时)。 
- 
    类型转移类型。 
- 
    使用量UsageType(可选) 端点使用情况提示。 
EnumerateDevicesAndRequestAccessOptions
属性
- 
    interfaceIdnumber 可选 要请求访问的接口 ID。仅适用于 ChromeOS。对其他平台没有影响。 
- 
    productId数值 商品 ID。 
- 
    vendorId数值 设备供应商 ID。 
EnumerateDevicesOptions
属性
- 
    过滤器DeviceFilter[] 可选 系统将返回与任何给定过滤条件匹配的设备。如果过滤条件列表为空,则会返回应用有权访问的所有设备。 
- 
    productIdnumber 可选 已弃用相当于设置 DeviceFilter.productId。
- 
    vendorIdnumber 可选 已弃用相当于设置 DeviceFilter.vendorId。
GenericTransferInfo
属性
- 
    数据ArrayBuffer 可选 要传输的数据(仅输出传输需要)。 
- 
    方向转移方向( "in"或"out")。
- 
    endpoint数值 目标端点地址。包含此端点的接口必须已声明。 
- 
    长度number 可选 要接收的字节数上限(仅输入转移需要)。 
- 
    超时number 可选 Chrome 43 及更高版本请求超时时间(以毫秒为单位)。默认值 0表示无超时。
InterfaceDescriptor
属性
- 
    alternateSetting数值 接口备选设置编号(默认为 0
- 
    说明字符串(选填) 界面说明。 
- 
    endpointsEndpointDescriptorEndpointDescriptor[] 可用的端点。 
- 
    extra_dataArrayBuffer 与此接口关联的额外描述符数据。 
- 
    interfaceClass数值 USB 接口类。 
- 
    interfaceNumber数值 接口编号。 
- 
    interfaceProtocol数值 USB 接口协议。 
- 
    interfaceSubclass数值 USB 接口子类。 
IsochronousTransferInfo
属性
- 
    packetLength数值 相应传输中每个数据包的长度。 
- 
    数据包数值 相应传输中的数据包总数。 
- 
    transferInfo转移参数。此形参块中指定的转移长度或数据缓冲区沿 packetLength边界拆分,以形成转移的各个数据包。
Recipient
枚举
“设备” 
 
“界面” 
 
“端点” 
 
“其他” 
 
RequestType
枚举
“标准” 
 
“class” 
 
“vendor” 
 
“reserved” 
 
SynchronizationType
对于中断模式和同步模式,SynchronizationType 和 UsageType 会映射到 USB 规范中的同名属性。
枚举
“异步” 
 
“自适应” 
 
“同步” 
 
TransferResultInfo
属性
- 
    数据ArrayBuffer 可选 输入转移返回的数据。 undefined(用于输出转移)。
- 
    resultCodenumber 可选 值 0表示转移成功。其他值表示失败。
TransferType
枚举
“控制” 
 
“中断” 
 
“同步” 
 
“批量” 
 
UsageType
枚举
“数据” 
 
“反馈” 
 
“explicitFeedback” 
 
“周期性” 
 
“通知” 
 
方法
bulkTransfer()
chrome.usb.bulkTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
在指定设备上执行批量转移。
参数
- 
    与设备的开放连接。 
- 
    transferInfo转移参数。 
- 
    callback函数 可选 callback参数如下所示:(info: TransferResultInfo) => void 
返回
- 
            Promise<TransferResultInfo> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
claimInterface()
chrome.usb.claimInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
声明 USB 设备上的接口。在将数据传输到接口或关联的端点之前,必须先声明接口。在任何给定时间,只能有一个连接句柄声明接口。如果接口已被声明,则此调用将失败。
不再需要相应接口时,应调用 releaseInterface。
参数
- 
    与设备的开放连接。 
- 
    interfaceNumber数值 要声明的接口。 
- 
    callback函数 可选 callback参数如下所示:() => void 
返回
- 
            Promise<void> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
closeDevice()
chrome.usb.closeDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<void>
关闭连接句柄。在句柄关闭后调用该句柄上的操作是安全的操作,但不会导致采取任何操作。
参数
- 
    用于关闭的 ConnectionHandle。
- 
    callback函数 可选 callback参数如下所示:() => void 
返回
- 
            Promise<void> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
controlTransfer()
chrome.usb.controlTransfer(
handle: ConnectionHandle,
transferInfo: ControlTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
在指定设备上执行控制传输。
控制传输是指向设备、接口或端点的传输。转移到接口或端点需要声明接口。
参数
- 
    与设备的开放连接。 
- 
    transferInfo
- 
    callback函数 可选 callback参数如下所示:(info: TransferResultInfo) => void 
返回
- 
            Promise<TransferResultInfo> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
findDevices()
chrome.usb.findDevices(
options: EnumerateDevicesAndRequestAccessOptions,
callback?: function,
): Promise<ConnectionHandle[]>
查找由供应商、产品和(可选)接口 ID 指定的 USB 设备,并在权限允许的情况下打开这些设备以供使用。
如果访问请求被拒绝或设备无法打开,则不会创建或返回连接句柄。
调用此方法等同于先调用 getDevices,然后针对每个设备调用 openDevice。
参数
- 
    要在目标设备上搜索的属性。 
- 
    callback函数 可选 callback参数如下所示:(handles: ConnectionHandle[]) => void - 
    标识名
 
- 
    
返回
- 
            Promise<ConnectionHandle[]> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
getConfiguration()
chrome.usb.getConfiguration(
handle: ConnectionHandle,
callback?: function,
): Promise<ConfigDescriptor>
获取当前所选配置的配置描述符。
参数
- 
    与设备的开放连接。 
- 
    callback函数 可选 callback参数如下所示:(config: ConfigDescriptor) => void - 
    config
 
- 
    
返回
- 
            Promise<ConfigDescriptor> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
getConfigurations()
chrome.usb.getConfigurations(
device: Device,
callback?: function,
): Promise<ConfigDescriptor[]>
返回完整的设备配置描述符集。
参数
- 
    设备要从中提取描述符的 Device。
- 
    callback函数 可选 callback参数如下所示:(configs: ConfigDescriptor[]) => void - 
    configsConfigDescriptorConfigDescriptor[] 
 
- 
    
返回
- 
            Promise<ConfigDescriptor[]> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
getDevices()
chrome.usb.getDevices(
options: EnumerateDevicesOptions,
callback?: function,
): Promise<Device[]>
枚举已连接的 USB 设备。
参数
返回
- 
            Promise<Device[]> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
getUserSelectedDevices()
chrome.usb.getUserSelectedDevices(
options: DevicePromptOptions,
callback?: function,
): Promise<Device[]>
向用户显示设备选择器,并返回所选的 Device。如果用户取消选择器,则所选设备将为空。需要用户手势才能显示对话框。如果没有用户手势,回调将像用户取消一样运行。
参数
返回
- 
            Promise<Device[]> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
interruptTransfer()
chrome.usb.interruptTransfer(
handle: ConnectionHandle,
transferInfo: GenericTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
在指定设备上执行中断传输。
参数
- 
    与设备的开放连接。 
- 
    transferInfo转移参数。 
- 
    callback函数 可选 callback参数如下所示:(info: TransferResultInfo) => void 
返回
- 
            Promise<TransferResultInfo> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
isochronousTransfer()
chrome.usb.isochronousTransfer(
handle: ConnectionHandle,
transferInfo: IsochronousTransferInfo,
callback?: function,
): Promise<TransferResultInfo>
在特定设备上执行等时传输。
参数
- 
    与设备的开放连接。 
- 
    transferInfo
- 
    callback函数 可选 callback参数如下所示:(info: TransferResultInfo) => void 
返回
- 
            Promise<TransferResultInfo> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
listInterfaces()
chrome.usb.listInterfaces(
handle: ConnectionHandle,
callback?: function,
): Promise<InterfaceDescriptor[]>
列出 USB 设备上的所有接口。
参数
- 
    与设备的开放连接。 
- 
    callback函数 可选 callback参数如下所示:(descriptors: InterfaceDescriptor[]) => void - 
    描述符InterfaceDescriptorInterfaceDescriptor[] 
 
- 
    
返回
- 
            Promise<InterfaceDescriptor[]> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
openDevice()
chrome.usb.openDevice(
device: Device,
callback?: function,
): Promise<ConnectionHandle>
打开 getDevices 返回的 USB 设备。
参数
- 
    设备要打开的 Device。
- 
    callback函数 可选 callback参数如下所示:(handle: ConnectionHandle) => void 
返回
- 
            Promise<ConnectionHandle> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
releaseInterface()
chrome.usb.releaseInterface(
handle: ConnectionHandle,
interfaceNumber: number,
callback?: function,
): Promise<void>
释放已声明的接口。
参数
- 
    与设备的开放连接。 
- 
    interfaceNumber数值 要释放的接口。 
- 
    callback函数 可选 callback参数如下所示:() => void 
返回
- 
            Promise<void> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
requestAccess()
chrome.usb.requestAccess(
device: Device,
interfaceId: number,
callback?: function,
): Promise<boolean>
此函数是 Chrome OS 特有的,在其他平台上调用它会失败。此操作现在作为 openDevice 的一部分隐式执行,并且此函数将在所有平台上返回 true。
如果设备上的指定接口未被声明,则向权限代理请求对 Chrome OS 所声明设备的访问权限。
参数
- 
    设备要请求访问的 Device。
- 
    interfaceId数值 所请求的特定接口。 
- 
    callback函数 可选 callback参数如下所示:(success: boolean) => void - 
    成功布尔值 
 
- 
    
返回
- 
            Promise<boolean> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
resetDevice()
chrome.usb.resetDevice(
handle: ConnectionHandle,
callback?: function,
): Promise<boolean>
尝试重置 USB 设备。如果重置失败,给定的连接句柄将被关闭,并且 USB 设备将显示为断开连接,然后重新连接。在这种情况下,必须再次调用 getDevices 或 findDevices 来获取设备。
参数
- 
    要重置的连接句柄。 
- 
    callback函数 可选 callback参数如下所示:(success: boolean) => void - 
    成功布尔值 
 
- 
    
返回
- 
            Promise<boolean> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
setConfiguration()
chrome.usb.setConfiguration(
handle: ConnectionHandle,
configurationValue: number,
callback?: function,
): Promise<void>
选择设备配置。
此功能通过选择设备的可用配置之一来有效重置设备。只有大于 0 的配置值才有效,但某些存在 bug 的设备具有有效的配置 0,因此允许使用此值。
参数
- 
    与设备的开放连接。 
- 
    configurationValue数值 
- 
    callback函数 可选 callback参数如下所示:() => void 
返回
- 
            Promise<void> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
setInterfaceAlternateSetting()
chrome.usb.setInterfaceAlternateSetting(
handle: ConnectionHandle,
interfaceNumber: number,
alternateSetting: number,
callback?: function,
): Promise<void>
在之前声明的接口上选择替代设置。
参数
- 
    已声明此接口的设备的开放连接。 
- 
    interfaceNumber数值 要配置的接口。 
- 
    alternateSetting数值 要配置的替代设置。 
- 
    callback函数 可选 callback参数如下所示:() => void 
返回
- 
            Promise<void> Chrome 116 及更高版本仅 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。 
事件
onDeviceAdded
chrome.usb.onDeviceAdded.addListener(
callback: function,
)
当设备添加到系统时生成的事件。事件仅广播给有权访问设备的应用和扩展程序。权限可能是在安装时授予的,当时用户接受了可选权限(请参阅 permissions.request),也可能是通过 getUserSelectedDevices 授予的。
onDeviceRemoved
chrome.usb.onDeviceRemoved.addListener(
callback: function,
)
当设备从系统中移除时生成的事件。如需了解哪些事件会传递,请参阅 onDeviceAdded。