chrome.usb

Mô tả

Sử dụng API chrome.usb để tương tác với các thiết bị USB đã kết nối. API này cấp quyền truy cập vào các hoạt động USB từ trong bối cảnh của một ứng dụng. Khi sử dụng API này, các ứng dụng có thể hoạt động như trình điều khiển cho các thiết bị phần cứng. Các lỗi do API này tạo ra được báo cáo bằng cách đặt runtime.lastError và thực thi lệnh gọi lại thông thường của hàm. Trong trường hợp này, tham số thông thường của lệnh gọi lại sẽ không được xác định.

Quyền

usb

Loại

ConfigDescriptor

Thuộc tính

  • hoạt động

    boolean

    Chrome 47 trở lên

    Đây có phải là cấu hình đang hoạt động không?

  • configurationValue

    số

    Số cấu hình.

  • description

    chuỗi không bắt buộc

    Nội dung mô tả về cấu hình.

  • extra_data

    ArrayBuffer

    Dữ liệu mô tả bổ sung được liên kết với cấu hình này.

  • giao diện

    Giao diện có sẵn.

  • maxPower

    số

    Công suất tối đa mà thiết bị này cần đến tính bằng miliampe (mA).

  • remoteWakeup

    boolean

    Thiết bị hỗ trợ đánh thức từ xa.

  • selfPowered

    boolean

    Thiết bị này tự cấp nguồn.

ConnectionHandle

Thuộc tính

  • handle

    số

    Một ô điều khiển mờ biểu thị kết nối này với thiết bị USB cũng như tất cả giao diện đã xác nhận quyền sở hữu và đang chờ chuyển có liên quan. Một tên người dùng mới sẽ được tạo mỗi khi mở thiết bị. Ô điều khiển kết nối khác với Device.device.

  • productId

    số

    Mã sản phẩm.

  • vendorId

    số

    Mã nhà cung cấp thiết bị.

ControlTransferInfo

Thuộc tính

  • dữ liệu

    ArrayBuffer không bắt buộc

    Dữ liệu cần truyền (chỉ bắt buộc đối với hoạt động chuyển dữ liệu đầu ra).

  • chỉ đường

    Hướng chuyển ("in" hoặc "out").

  • index

    số

    Trường wIndex, xem Ibid.

  • chiều dài

    số không bắt buộc

    Số byte tối đa cần nhận (chỉ yêu cầu đối với quá trình chuyển dữ liệu đầu vào).

  • người nhận

    Mục tiêu chuyển. Mục tiêu do index đưa ra phải được xác nhận nếu "interface" hoặc "endpoint".

  • request

    số

    Trường bRequest, hãy xem Bản sửa đổi thông số kỹ thuật Universal Serial Bus 1.1 § 9.3.

  • requestType

    Loại yêu cầu.

  • tạm ngừng

    số không bắt buộc

    Chrome 43 trở lên

    Thời gian chờ yêu cầu (tính bằng mili giây). Giá trị mặc định 0 cho biết không có thời gian chờ.

  • value

    số

    Trường wValue, xem Ibid.

Device

Thuộc tính

  • thiết bị

    số

    Mã nhận dạng mờ cho thiết bị USB. Thiết bị vẫn không thay đổi cho đến khi rút phích cắm.

  • manufacturerName

    string

    Chrome 46 trở lên

    Chuỗi iManufacturer được đọc từ thiết bị, nếu có.

  • productId

    số

    Mã sản phẩm.

  • Tên sản phẩm

    string

    Chrome 46 trở lên

    Chuỗi iProduct được đọc từ thiết bị, nếu có.

  • serialNumber

    string

    Chrome 46 trở lên

    Chuỗi iSerialNumber được đọc từ thiết bị, nếu có.

  • vendorId

    số

    Mã nhà cung cấp thiết bị.

  • version

    số

    Chrome 51 trở lên

    Phiên bản thiết bị (trường bcdDevice).

DeviceFilter

Thuộc tính

  • interfaceClass

    số không bắt buộc

    Lớp giao diện USB khớp với mọi giao diện trên thiết bị.

  • interfaceProtocol

    số không bắt buộc

    Giao thức giao diện USB, chỉ được đánh dấu nếu lớp giao diện phụ khớp.

  • interfaceSubclass

    số không bắt buộc

    Lớp con của giao diện USB, chỉ được đánh dấu nếu lớp giao diện khớp.

  • productId

    số không bắt buộc

    Mã sản phẩm của thiết bị, chỉ kiểm tra nếu mã nhà cung cấp trùng khớp.

  • vendorId

    số không bắt buộc

    Mã nhà cung cấp thiết bị.

DevicePromptOptions

Thuộc tính

  • bộ lọc

    DeviceFilter[] không bắt buộc

    Lọc danh sách thiết bị mà người dùng nhìn thấy. Nếu bạn cung cấp nhiều bộ lọc, thì các thiết bị khớp với một bộ lọc bất kỳ sẽ hiển thị.

  • nhiều

    boolean không bắt buộc

    Cho phép người dùng chọn nhiều thiết bị.

Direction

Chỉ đường, Người nhận, mật vị và TransferType đều liên kết với tên của chúng trong thông số kỹ thuật của USB.

Enum

"trong"

"out"

EndpointDescriptor

Thuộc tính

  • xử lý

    số

    Địa chỉ thiết bị đầu cuối.

  • chỉ đường

    Hướng chuyển.

  • extra_data

    ArrayBuffer

    Dữ liệu mô tả bổ sung liên kết với điểm cuối này.

  • maximumPacketSize

    số

    Kích thước gói tối đa.

  • pollingInterval

    số không bắt buộc

    Khoảng thời gian thăm dò (chỉ gián đoạn và đồng thời).

  • đồng bộ hoá

    SynchronizationType không bắt buộc

    Chuyển chế độ đồng bộ hoá (chỉ đồng bộ).

  • loại

    Loại chuyển dữ liệu.

  • mức sử dụng

    UsageType không bắt buộc

    Gợi ý sử dụng thiết bị đầu cuối.

EnumerateDevicesAndRequestAccessOptions

Thuộc tính

  • interfaceId

    số không bắt buộc

    Mã giao diện để yêu cầu quyền truy cập. Chỉ hoạt động trên ChromeOS. và không ảnh hưởng đến các nền tảng khác.

  • productId

    số

    Mã sản phẩm.

  • vendorId

    số

    Mã nhà cung cấp thiết bị.

EnumerateDevicesOptions

Thuộc tính

  • bộ lọc

    DeviceFilter[] không bắt buộc

    Một thiết bị khớp với một bộ lọc nhất định bất kỳ sẽ được trả về. Danh sách bộ lọc trống sẽ trả về tất cả thiết bị mà ứng dụng có quyền.

  • productId

    số không bắt buộc

    Không dùng nữa

    Tương đương với việc thiết lập DeviceFilter.productId.

  • vendorId

    số không bắt buộc

    Không dùng nữa

    Tương đương với việc thiết lập DeviceFilter.vendorId.

GenericTransferInfo

Thuộc tính

  • dữ liệu

    ArrayBuffer không bắt buộc

    Dữ liệu cần truyền (chỉ bắt buộc đối với hoạt động chuyển dữ liệu đầu ra).

  • chỉ đường

    Hướng chuyển ("in" hoặc "out").

  • thiết bị đầu cuối

    số

    Địa chỉ điểm cuối đích. Giao diện chứa điểm cuối này phải được xác nhận quyền sở hữu.

  • chiều dài

    số không bắt buộc

    Số byte tối đa cần nhận (chỉ yêu cầu đối với quá trình chuyển dữ liệu đầu vào).

  • tạm ngừng

    số không bắt buộc

    Chrome 43 trở lên

    Thời gian chờ yêu cầu (tính bằng mili giây). Giá trị mặc định 0 cho biết không có thời gian chờ.

InterfaceDescriptor

Thuộc tính

  • alternateSetting

    số

    Số cài đặt thay thế của giao diện (mặc định là 0

  • description

    chuỗi không bắt buộc

    Nội dung mô tả về giao diện.

  • điểm cuối

    Các điểm cuối hiện có.

  • extra_data

    ArrayBuffer

    Dữ liệu mô tả bổ sung được liên kết với giao diện này.

  • interfaceClass

    số

    Lớp giao diện USB.

  • interfaceNumber

    số

    Số giao diện.

  • interfaceProtocol

    số

    Giao thức giao diện USB.

  • interfaceSubclass

    số

    Lớp con của giao diện USB.

IsochronousTransferInfo

Thuộc tính

  • packetLength

    số

    Độ dài của mỗi gói trong quá trình chuyển này.

  • gói tin

    số

    Tổng số gói trong quá trình chuyển này.

  • transferInfo

    Truyền thông số. Độ dài truyền hoặc vùng đệm dữ liệu được chỉ định trong khối tham số này được phân chia dọc theo ranh giới packetLength để tạo thành các gói riêng lẻ trong quá trình chuyển.

Recipient

Enum

"thiết bị"

"giao diện"

"điểm cuối"

"khác"

RequestType

Enum

"tiêu chuẩn"

"lớp"

"vendor"

"dành riêng"

SynchronizationType

Đối với các chế độ gián đoạn và đồng thời, ParallelType và UsageType sẽ liên kết với cùng tên trong thông số kỹ thuật của USB.

Enum

"không đồng bộ"

"thích ứng"

"đồng bộ"

TransferResultInfo

Thuộc tính

  • dữ liệu

    ArrayBuffer không bắt buộc

    Dữ liệu được trả về bằng hoạt động chuyển dữ liệu đầu vào. undefined để chuyển đầu ra.

  • resultCode

    số không bắt buộc

    Giá trị 0 cho biết quá trình chuyển đã thành công. Các giá trị khác cho biết không thành công.

TransferType

Enum

"control"

"gián đoạn"

"đồng bộ"

"hàng loạt"

UsageType

Enum

"dữ liệu"

"phản hồi"

"explicitResponse"

"định kỳ"

"notification"

Phương thức

bulkTransfer()

Lời hứa
chrome.usb.bulkTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)

Thực hiện chuyển hàng loạt trên thiết bị được chỉ định.

Tham số

Giá trị trả về

  • Promise<TransferResultInfo>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

claimInterface()

Lời hứa
chrome.usb.claimInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)

Xác nhận một giao diện trên thiết bị USB. Trước khi có thể chuyển dữ liệu sang một giao diện hoặc các điểm cuối được liên kết, bạn phải xác nhận quyền sở hữu giao diện đó. Tại một thời điểm bất kỳ, chỉ một tên người dùng kết nối có thể xác nhận quyền sở hữu một giao diện. Nếu giao diện đã được xác nhận quyền sở hữu, lệnh gọi này sẽ không thành công.

releaseInterface sẽ được gọi khi giao diện không còn cần thiết nữa.

Tham số

  • Kết nối đang mở với thiết bị.

  • interfaceNumber

    số

    Giao diện để được xác nhận quyền sở hữu.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    () => void

Giá trị trả về

  • Lời hứa<vô hiệu>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

closeDevice()

Lời hứa
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)

Đóng ô điều khiển kết nối. Việc gọi các thao tác trên một tên người dùng sau khi tên đó đóng là một thao tác an toàn nhưng sẽ không dẫn đến hành động nào được thực hiện.

Tham số

Giá trị trả về

  • Lời hứa<vô hiệu>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

controlTransfer()

Lời hứa
chrome.usb.controlTransfer(
  handle: ConnectionHandle,
  transferInfo: ControlTransferInfo,
  callback?: function,
)

Thực hiện chuyển quyền điều khiển trên thiết bị được chỉ định.

Quá trình chuyển quyền kiểm soát tham chiếu đến thiết bị, giao diện hoặc điểm cuối. Việc chuyển sang một giao diện hoặc điểm cuối cần phải được xác nhận quyền sở hữu đối với giao diện đó.

Tham số

Giá trị trả về

  • Promise&lt;TransferResultInfo&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

findDevices()

Lời hứa
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)

Tìm những thiết bị USB do mã nhà cung cấp, sản phẩm và giao diện (không bắt buộc) chỉ định, đồng thời tìm những thiết bị có quyền mở để sử dụng.

Nếu yêu cầu truy cập bị từ chối hoặc thiết bị không mở được, thì tên người dùng kết nối sẽ không được tạo hoặc trả về.

Việc gọi phương thức này tương đương với việc gọi getDevices, theo sau là openDevice cho từng thiết bị.

Tham số

Giá trị trả về

  • Promise&lt;ConnectionHandle[]&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getConfiguration()

Lời hứa
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)

Lấy chỉ số mô tả cấu hình cho cấu hình hiện được chọn.

Tham số

Giá trị trả về

  • Promise&lt;ConfigDescriptor&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getConfigurations()

Lời hứa Chrome 47 trở lên
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)

Trả về tập hợp đầy đủ trình mô tả cấu hình thiết bị.

Tham số

Giá trị trả về

  • Promise&lt;ConfigDescriptor[]&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getDevices()

Lời hứa
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)

Liệt kê các thiết bị USB được kết nối.

Tham số

  • Các thuộc tính cần tìm kiếm trên thiết bị mục tiêu.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (devices: Device[]) => void

Giá trị trả về

  • Cam kết<Thiết bị[]>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

getUserSelectedDevices()

Lời hứa
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)

Trình bày bộ chọn thiết bị cho người dùng và trả về các Device đã chọn. Nếu người dùng huỷ, các thiết bị trong bộ chọn sẽ trống. Bạn cần thực hiện cử chỉ của người dùng để hộp thoại hiện ra. Nếu không có cử chỉ của người dùng, lệnh gọi lại sẽ chạy như thể người dùng đã huỷ.

Tham số

  • tùy chọn

    Cấu hình của hộp thoại bộ chọn thiết bị.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (devices: Device[]) => void

Giá trị trả về

  • Cam kết<Thiết bị[]>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

interruptTransfer()

Lời hứa
chrome.usb.interruptTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)

Thực hiện chuyển gián đoạn trên thiết bị được chỉ định.

Tham số

Giá trị trả về

  • Promise&lt;TransferResultInfo&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

isochronousTransfer()

Lời hứa
chrome.usb.isochronousTransfer(
  handle: ConnectionHandle,
  transferInfo: IsochronousTransferInfo,
  callback?: function,
)

Thực hiện quá trình chuyển đồng thời trên thiết bị cụ thể.

Tham số

Giá trị trả về

  • Promise&lt;TransferResultInfo&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

listInterfaces()

Lời hứa
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)

Liệt kê tất cả giao diện trên thiết bị USB.

Tham số

Giá trị trả về

  • Promise&lt;InterfaceDescriptor[]&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

openDevice()

Lời hứa
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)

Mở một thiết bị USB do getDevices trả về.

Tham số

Giá trị trả về

  • Promise&lt;ConnectionHandle&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

releaseInterface()

Lời hứa
chrome.usb.releaseInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)

Phát hành giao diện đã được xác nhận quyền sở hữu.

Tham số

  • Kết nối đang mở với thiết bị.

  • interfaceNumber

    số

    Giao diện sẽ được phát hành.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    () => void

Giá trị trả về

  • Lời hứa<vô hiệu>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

requestAccess()

Lời hứa Không dùng nữa
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)

Hàm này dành riêng cho Chrome OS nên không gọi được trên các nền tảng khác. Giờ đây, thao tác này được ngầm thực hiện như một phần của openDevice và hàm này sẽ trả về true trên tất cả nền tảng.

Yêu cầu quyền truy cập từ bên môi giới quyền truy cập vào một thiết bị được Chrome OS xác nhận quyền sở hữu nếu giao diện đã cho trên thiết bị không được xác nhận quyền sở hữu.

Tham số

  • thiết bị

    Device để yêu cầu quyền truy cập.

  • interfaceId

    số

    Giao diện cụ thể được yêu cầu.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (success: boolean) => void

    • thành công

      boolean

Giá trị trả về

  • Promise&lt;boolean&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

resetDevice()

Lời hứa
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)

Đang cố đặt lại thiết bị USB. Nếu quá trình đặt lại không thành công, tay cầm kết nối đã cho sẽ bị đóng và thiết bị USB có vẻ như đã bị ngắt kết nối rồi được kết nối lại. Trong trường hợp này, bạn phải gọi lại getDevices hoặc findDevices để lấy thiết bị.

Tham số

  • Một ô điều khiển kết nối để đặt lại.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    (success: boolean) => void

    • thành công

      boolean

Giá trị trả về

  • Promise&lt;boolean&gt;

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

setConfiguration()

Lời hứa
chrome.usb.setConfiguration(
  handle: ConnectionHandle,
  configurationValue: number,
  callback?: function,
)

Chọn một cấu hình thiết bị.

Chức năng này đặt lại thiết bị một cách hiệu quả bằng cách chọn một trong các cấu hình có sẵn của thiết bị. Chỉ các giá trị cấu hình lớn hơn 0 mới hợp lệ. Tuy nhiên, một số thiết bị lỗi có cấu hình đang hoạt động 0 nên bạn được phép sử dụng giá trị này.

Tham số

  • Kết nối đang mở với thiết bị.

  • configurationValue

    số

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    () => void

Giá trị trả về

  • Lời hứa<vô hiệu>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

setInterfaceAlternateSetting()

Lời hứa
chrome.usb.setInterfaceAlternateSetting(
  handle: ConnectionHandle,
  interfaceNumber: number,
  alternateSetting: number,
  callback?: function,
)

Chọn chế độ cài đặt thay thế trên giao diện đã xác nhận quyền sở hữu trước đó.

Tham số

  • Một kết nối mở tới thiết bị mà giao diện này đã được xác nhận quyền sở hữu.

  • interfaceNumber

    số

    Giao diện để định cấu hình.

  • alternateSetting

    số

    Chế độ cài đặt thay thế để định cấu hình.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    () => void

Giá trị trả về

  • Lời hứa<vô hiệu>

    Chrome 116 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

Sự kiện

onDeviceAdded

chrome.usb.onDeviceAdded.addListener(
  callback: function,
)

Sự kiện được tạo khi một thiết bị được thêm vào hệ thống. Các sự kiện chỉ được truyền phát tới các ứng dụng và tiện ích có quyền truy cập vào thiết bị này. Quyền có thể được cấp tại thời điểm cài đặt, khi người dùng chấp nhận một quyền không bắt buộc (xem permissions.request) hoặc thông qua getUserSelectedDevices.

Tham số

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (device: Device) => void

onDeviceRemoved

chrome.usb.onDeviceRemoved.addListener(
  callback: function,
)

Sự kiện được tạo khi một thiết bị bị xoá khỏi hệ thống. Hãy xem onDeviceAdded để biết những sự kiện được phân phối.

Tham số

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (device: Device) => void