chrome.usb

描述 使用 chrome.usb API 与已连接的 USB 设备交互。该 API 提供了在应用的环境中进行 USB 操作的能力,通过该 API 应用可以作为硬件设备的驱动程序使用。
可用版本 从 Chrome 26 开始支持。
权限 "usb"
了解更多 访问硬件设备

摘要

类型
Direction
Device
ConnectionHandle
GenericTransferInfo
TransferResultInfo
方法
getDevices chrome.usb.getDevices(object options, function callback)
requestAccess chrome.usb.requestAccess( Device device, integer interfaceId, function callback)
openDevice chrome.usb.openDevice( Device device, function callback)
findDevices chrome.usb.findDevices(object options, function callback)
closeDevice chrome.usb.closeDevice( ConnectionHandle handle, function callback)
listInterfaces chrome.usb.listInterfaces( ConnectionHandle handle, function callback)
claimInterface chrome.usb.claimInterface( ConnectionHandle handle, integer interfaceNumber, function callback)
releaseInterface chrome.usb.releaseInterface( ConnectionHandle handle, integer interfaceNumber, function callback)
setInterfaceAlternateSetting chrome.usb.setInterfaceAlternateSetting( ConnectionHandle handle, integer interfaceNumber, integer alternateSetting, function callback)
controlTransfer chrome.usb.controlTransfer( ConnectionHandle handle, object transferInfo, function callback)
bulkTransfer chrome.usb.bulkTransfer( ConnectionHandle handle, GenericTransferInfo transferInfo, function callback)
interruptTransfer chrome.usb.interruptTransfer( ConnectionHandle handle, GenericTransferInfo transferInfo, function callback)
isochronousTransfer chrome.usb.isochronousTransfer( ConnectionHandle handle, object transferInfo, function callback)
resetDevice chrome.usb.resetDevice( ConnectionHandle handle, function callback)

类型

Direction

Direction(方向)、Recipient(接收方)和 RequestType(请求类型)都与 USB 规范中的相应术语一致。
枚举
"in", or "out"

Device

属性
integer device

从 Chrome 31 开始支持。

USB 设备的标识符,在设备拔出前不会更改。

integer vendorId
integer productId

ConnectionHandle

从 Chrome 31 开始支持。

属性
integer handle

USB 连接句柄的标识符。

integer vendorId
integer productId

GenericTransferInfo

属性
Direction direction

本次传输的方向。

integer endpoint
integer (可选)
length

如果本次传输是输入传输,则该字段表示输入缓冲区的大小。如果本次传输是输出传输,将忽略该字段。

ArrayBuffer (可选)
data

如果是输出传输,则必须包含该字段,否则将忽略。

TransferResultInfo

属性
integer (可选)
resultCode

0 表示传输成功,其他值表示失败。

ArrayBuffer (可选)
data

如果本次传输是输入传输,该字段将包含所有请求的输入数据。

方法

getDevices

chrome.usb.getDevices(object options, function callback)

从 Chrome 31 开始支持。

列出制造商标识符/产品标识符/接口标识符指定的 USB 设备。

参数
object options

在目标设备上搜索的属性。

integer vendorId
integer productId
function callback

完成时调用,传递 Device 对象列表。

callback 参数应该是一个如下形式的函数:

function(array of Device devices) {...};
array of Device devices

requestAccess

chrome.usb.requestAccess( Device device, integer interfaceId, function callback)

从 Chrome 31 开始支持。

该方法仅用于 ChromeOS,在其他平台上调用该方法会失败。如果设备上的指定接口没有被占有,则请求访问操作系统占有的设备。

参数
Device device

要请求访问的设备。

integer interfaceId

function callback

callback 参数应该是一个如下形式的函数:

function(boolean sucess) {...};
boolean sucess

openDevice

chrome.usb.openDevice( Device device, function callback)

从 Chrome 31 开始支持。

打开由 getDevices 返回的 USB 设备。

参数
Device device

要打开的 USB 设备。

function callback

完成时调用,传递创建的 ConnectionHandle(连接句柄)。

callback 参数应该是一个如下形式的函数:

function( ConnectionHandle handle) {...};
ConnectionHandle handle

findDevices

chrome.usb.findDevices(object options, function callback)

寻找制造商标识符(venderId)/产品标识符(productId)/接口标识符(interfaceId)指定的 USB 设备,如果权限允许的话同时打开设备以便使用。

在 ChromeOS 上,您可以指定 interfaceId,在这种情况下,该方法使用与 requestUsbAcccess 一样的方式请求访问权限。

如果访问请求被拒绝,或者无法打开设备,则不会创建或返回连接句柄。

调用该方法与调用 getDevices 并使用 requestAccess(如果是在 ChromeOS 上)和 openDevice 等价,同时返回所有成功打开的连接句柄。

参数
object options

用于搜索目标设备的属性。

integer vendorId
integer productId
integer (可选)
interfaceId

从 Chrome 29 开始支持。

要请求访问的接口标识符,仅在 ChromeOS 上可用,在其他平台上无效。

function callback

完成后调用,传递打开的 ConnectionHandle(连接句柄)。

callback 参数应该是一个如下形式的函数:

function(array of ConnectionHandle handles) {...};
array of ConnectionHandle handles

closeDevice

chrome.usb.closeDevice( ConnectionHandle handle, function callback)

关闭连接句柄。关闭设备后对其进行操作是安全的,而不会采取任何行动。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

要关闭的连接句柄。

function (可选)
callback

设备关闭后调用的回调函数。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

listInterfaces

chrome.usb.listInterfaces( ConnectionHandle handle, function callback)

从 Chrome 29 开始支持。

列举 USB 设备上的所有接口。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

要列举接口的设备。

function callback

接口列举完成时调用的回调函数。

callback 参数应该是一个如下形式的函数:

function(array of object descriptors) {...};
array of object descriptors

每一个对象的属性

integer interfaceNumber
integer alternateSetting
integer interfaceClass
integer interfaceSubclass
integer interfaceProtocol
string (可选)
description
array of object endpoints

每一个对象的属性

integer address
enum of "control", "interrupt", "isochronous", or "bulk" type
Direction direction
integer maximumPacketSize
enum of "asynchronous", "adaptive", or "synchronous" (可选)
synchronization

用于同步模式。

enum of "data", "feedback", or "explicitFeedback" (可选)
usage
integer (可选)
pollingInterval

如果是中断端点,这一值为 1~255。

claimInterface

chrome.usb.claimInterface( ConnectionHandle handle, integer interfaceNumber, function callback)

在指定 USB 设备上获取接口。在您可以与端点传输数据前,您必须获取它们所属的接口。同一主机上的每一个接口只有一个连接句柄可以占有。如果接口已经被占有,该调用会失败。

不再需要接口时您应该调用 releaseInterface。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

要获取接口的设备。

integer interfaceNumber
function callback

获取接口后调用的回调函数。

callback 参数应该是一个如下形式的函数:

function() {...};

releaseInterface

chrome.usb.releaseInterface( ConnectionHandle handle, integer interfaceNumber, function callback)

释放在提供的设备上获取的接口。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

要释放接口的设备。

integer interfaceNumber
function callback

接口释放后调用的回调函数。

callback 参数应该是一个如下形式的函数:

function() {...};

setInterfaceAlternateSetting

chrome.usb.setInterfaceAlternateSetting( ConnectionHandle handle, integer interfaceNumber, integer alternateSetting, function callback)

在之前获取的设备接口上选择替代的设置。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

要设置接口设置的设备。

integer interfaceNumber
integer alternateSetting

要设置的替代设置。

function callback

接口设置后调用的回调函数。

callback 参数应该是一个如下形式的函数:

function() {...};

controlTransfer

chrome.usb.controlTransfer( ConnectionHandle handle, object transferInfo, function callback)

在指定设备上进行控制传输,有关进行传输所需要的参数,请参见 ControlTransferInfo 结构。

从概念上说,控制传输与设备本身通信,您不需要占有接口 0 来进行控制传输。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

进行传输的连接句柄。

object transferInfo

传输的参数,参见 ControlTransferInfo。

Direction direction

本次传输的方向。

enum of "device", "interface", "endpoint", or "other" recipient

本次传输的接收方。

enum of "standard", "class", "vendor", or "reserved" requestType

本次请求的类型。

integer request
integer value
integer index
integer (可选)
length

如果本次传输是输入传输,则该字段必须设置为预期的数据长度。如果本次传输是输出传输,将忽略该字段。

ArrayBuffer (可选)
data

本次传输所携带的数据。如果是输出传输,则必须设置该字段。

function callback

传输完成后调用。

callback 参数应该是一个如下形式的函数:

function( TransferResultInfo info) {...};
TransferResultInfo info

bulkTransfer

chrome.usb.bulkTransfer( ConnectionHandle handle, GenericTransferInfo transferInfo, function callback)

在指定设备上进行大块传输。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

进行传输的连接句柄。

GenericTransferInfo transferInfo

传输的参数,参见 GenericTransferInfo。

function callback

传输完成后调用。

callback 参数应该是一个如下形式的函数:

function( TransferResultInfo info) {...};
TransferResultInfo info

interruptTransfer

chrome.usb.interruptTransfer( ConnectionHandle handle, GenericTransferInfo transferInfo, function callback)

在指定设备上进行中断传输。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

进行传输的连接句柄。

GenericTransferInfo transferInfo

传输的参数,参见 GenericTransferInfo。

function callback

传输完成后调用。

callback 参数应该是一个如下形式的函数:

function( TransferResultInfo info) {...};
TransferResultInfo info

isochronousTransfer

chrome.usb.isochronousTransfer( ConnectionHandle handle, object transferInfo, function callback)

在指定设备上进行同步传输。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

进行传输的连接句柄。

object transferInfo

传输的参数,参见 IsochronousTransferInfo。

GenericTransferInfo transferInfo

所有一般的传输参数都包含在此 transferInfo 参数中。注意,该参数块中指定的数据将按照数据包长度(packetLength)分割,构成传输过程中的每一个数据包。

integer packets

本次传输中数据包的总数。

integer packetLength

本次传输中每个数据包的长度。

function callback

传输完成后调用。

callback 参数应该是一个如下形式的函数:

function( TransferResultInfo info) {...};
TransferResultInfo info

resetDevice

chrome.usb.resetDevice( ConnectionHandle handle, function callback)

从 Chrome 28 开始支持。

尝试重置 USB 设备,并恢复原来的状态。如果重置失败,指定的连接句柄将会关闭,USB 设备就像断开连接后再重新连接一样。在这种情况下,您必须再次调用 getDevices 或 findDevices 获取设备。

参数
ConnectionHandle handle

从 Chrome 31 开始支持。

要重置的连接句柄。

function callback

设备重置后调用,传递的布尔值表示重置是否成功完成。

callback 参数应该是一个如下形式的函数:

function(boolean result) {...};
boolean result