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 cung cấp quyền truy cập vào các thao tác USB trong bối cảnh của một ứng dụng. Khi 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 sẽ đượ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. Các tham số thông thường của lệnh gọi lại sẽ không xác định trong trường hợp này.

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.

  • mô tả

    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

    Các giao diện có sẵn.

  • maxPower

    số

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

  • remoteWakeup

    boolean

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

  • selfPowered

    boolean

    Thiết bị tự cung cấp nguồn điện.

ConnectionHandle

Thuộc tính

  • handle

    số

    Một handle mờ đại diện cho kết nối này với thiết bị USB và tất cả các giao diện được xác nhận quyền sở hữu cũng như các hoạt động truyền đang chờ xử lý được liên kết. Một đối tượng xử lý mới sẽ được tạo mỗi khi thiết bị mở. Xử lý kết nối khác với Device.device.

  • productId

    số

    Mã sản phẩm.

  • vendorId

    số

    Mã nhận dạng nhà cung cấp thiết bị.

ControlTransferInfo

Thuộc tính

  • khác

    ArrayBuffer không bắt buộc

    Dữ liệu cần truyền (chỉ cần thiết cho các hoạt động chuyển đầu ra).

  • chỉ đường

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

  • index

    số

    Trường wIndex, xem Ibid.

  • chiều dài

    number không bắt buộc

    Số byte tối đa cần nhận (chỉ cần thiết cho các lượt truyền dữ liệu đầu vào).

  • người nhận

    Mục tiêu chuyển. Bạn phải xác nhận quyền sở hữu mục tiêu do index cung cấp nếu "interface" hoặc "endpoint".

  • request

    số

    Trường bRequest, xem Universal Serial Bus Specification Revision 1.1 § 9.3.

  • requestType

    Loại yêu cầu.

  • tạm ngừng

    number không bắt buộc

    Chrome 43 trở lên

    Hết thời gian 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 không công khai cho thiết bị USB. Chế độ này vẫn không thay đổi cho đến khi thiết bị được rút phích cắm.

  • manufacturerName

    chuỗi

    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

    chuỗi

    Chrome 46 trở lên

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

  • serialNumber

    chuỗi

    Chrome 46 trở lên

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

  • vendorId

    số

    Mã nhận dạng 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

    number 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

    number không bắt buộc

    Giao thức giao diện USB, chỉ được kiểm tra nếu lớp con giao diện trùng khớp.

  • interfaceSubclass

    number không bắt buộc

    Lớp con giao diện USB, chỉ được kiểm tra nếu lớp giao diện khớp.

  • productId

    number không bắt buộc

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

  • vendorId

    number không bắt buộc

    Mã nhận dạng 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ị được trình bày cho người dùng. Nếu bạn cung cấp nhiều bộ lọc, thì những thiết bị khớp với bất kỳ bộ lọc nào sẽ xuất hiện.

  • nhiều

    boolean không bắt buộc

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

Direction

Direction, Recipient, RequestType và TransferType đều tương ứng với tên của chúng trong quy cách USB.

Enum

"in"

"out"

EndpointDescriptor

Thuộc tính

  • xử lý

    số

    Địa chỉ điểm cuối.

  • chỉ đường

    Hướng chuyển.

  • extra_data

    ArrayBuffer

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

  • maximumPacketSize

    số

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

  • pollingInterval

    number không bắt buộc

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

  • đồng bộ hoá

    SynchronizationType không bắt buộc

    Chế độ đồng bộ hoá truyền (chỉ đồng bộ).

  • loại

    Loại chuyển.

  • mức sử dụng

    UsageType không bắt buộc

    Gợi ý sử dụng điểm cuối.

EnumerateDevicesAndRequestAccessOptions

Thuộc tính

  • interfaceId

    number không bắt buộc

    Mã nhận dạng giao diện để yêu cầu quyền truy cập. Chỉ có trên ChromeOS. Lựa chọn này 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ận dạng 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 bất kỳ bộ lọc nào đã cho sẽ được trả về. Danh sách bộ lọc trống sẽ trả về tất cả các thiết bị mà ứng dụng có quyền truy cập.

  • productId

    number không bắt buộc

    Không dùng nữa

    Tương đương với việc đặt DeviceFilter.productId.

  • vendorId

    number không bắt buộc

    Không dùng nữa

    Tương đương với việc đặt DeviceFilter.vendorId.

GenericTransferInfo

Thuộc tính

  • khác

    ArrayBuffer không bắt buộc

    Dữ liệu cần truyền (chỉ cần thiết cho các hoạt động chuyển đầu ra).

  • chỉ đường

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

  • điểm cuối

    số

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

  • chiều dài

    number không bắt buộc

    Số byte tối đa cần nhận (chỉ cần thiết cho các lượt truyền dữ liệu đầu vào).

  • tạm ngừng

    number không bắt buộc

    Chrome 43 trở lên

    Hết thời gian 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ố chế độ cài đặt thay thế của giao diện (mặc định là 0

  • mô tả

    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 có sẵn.

  • 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 giao diện USB.

IsochronousTransferInfo

Thuộc tính

  • packetLength

    số

    Độ dài của từng gói trong quá trình truyền này.

  • gói

    số

    Tổng số gói trong lần chuyển này.

  • transferInfo

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

Recipient

Enum

"device"

"interface"

"endpoint"

"other"

RequestType

Enum

"standard"

"class"

"vendor"

"reserved"

SynchronizationType

Đối với chế độ ngắt và chế độ đẳng thời, SynchronizationType và UsageType sẽ liên kết với các tên tương ứng trong quy cách USB.

Enum

"asynchronous"

"thích ứng"

"synchronous"

TransferResultInfo

Thuộc tính

  • khác

    ArrayBuffer không bắt buộc

    Dữ liệu do một hoạt động chuyển đầu vào trả về. undefined cho các lượt chuyển đầu ra.

  • resultCode

    number 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 lỗi.

TransferType

Enum

"control"

"interrupt"

"isochronous"

"bulk"

UsageType

Enum

"data"

"feedback"

"explicitFeedback"

"periodic"

"notification"

Phương thức

bulkTransfer()

Promise
chrome.usb.bulkTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

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

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.claimInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

Xác nhận quyền sở hữu một giao diện trên thiết bị USB. Trước khi có thể chuyển dữ liệu đến 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ỉ có một đối tượng xử lý 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, thì lệnh gọi này sẽ không thành công.

Bạn nên gọi releaseInterface khi không còn cần đến giao diện này nữa.

Thông số

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

  • interfaceNumber

    số

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

  • callback

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.closeDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<void>

Đóng một đối tượng kết nối. Việc gọi các thao tác trên một đối tượng sau khi đối tượng đó đã bị đóng là một thao tác an toàn nhưng không gây ra hành động nào.

Thông số

  • Nhấn vào biểu tượng ConnectionHandle để đóng.

  • callback

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.controlTransfer(
  handle: ConnectionHandle,
  transferInfo: ControlTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Thực hiện một thao tác chuyển quyền kiểm soát trên thiết bị được chỉ định.

Hoạt động chuyển quyền kiểm soát đề cập đến thiết bị, giao diện hoặc điểm cuối. Để chuyển đến một giao diện hoặc điểm cuối, bạn cần phải xác nhận quyền sở hữu giao diện đó.

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.findDevices(
  options: EnumerateDevicesAndRequestAccessOptions,
  callback?: function,
)
: Promise<ConnectionHandle[]>

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

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

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

Thông số

Giá trị trả về

  • Promise<ConnectionHandle[]>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.getConfiguration(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<ConfigDescriptor>

Lấy nội dung mô tả cấu hình cho cấu hình hiện được chọn.

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise Chrome 47 trở lên
chrome.usb.getConfigurations(
  device: Device,
  callback?: function,
)
: Promise<ConfigDescriptor[]>

Trả về toàn bộ tập hợp các giá trị mô tả cấu hình thiết bị.

Thông số

Giá trị trả về

  • Promise<ConfigDescriptor[]>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.getDevices(
  options: EnumerateDevicesOptions,
  callback?: function,
)
: Promise<Device[]>

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

Thông số

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

  • callback

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

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

    (devices: Device[]) => void

Giá trị trả về

  • Promise<Device[]>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.getUserSelectedDevices(
  options: DevicePromptOptions,
  callback?: function,
)
: Promise<Device[]>

Hiển thị một trình 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ỷ trình chọn, thiết bị sẽ trống. Cần có cử chỉ của người dùng để hộp thoại xuất hiện. 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ỷ.

Thông số

  • tùy chọn

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

  • callback

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

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

    (devices: Device[]) => void

Giá trị trả về

  • Promise<Device[]>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.interruptTransfer(
  handle: ConnectionHandle,
  transferInfo: GenericTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Thực hiện một hoạt động truyền dữ liệu ngắt trên thiết bị được chỉ định.

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.isochronousTransfer(
  handle: ConnectionHandle,
  transferInfo: IsochronousTransferInfo,
  callback?: function,
)
: Promise<TransferResultInfo>

Thực hiện một hoạt động truyền dữ liệu đẳng thời trên thiết bị cụ thể.

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.listInterfaces(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<InterfaceDescriptor[]>

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

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.openDevice(
  device: Device,
  callback?: function,
)
: Promise<ConnectionHandle>

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

Thông số

Giá trị trả về

  • Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.releaseInterface(
  handle: ConnectionHandle,
  interfaceNumber: number,
  callback?: function,
)
: Promise<void>

Giải phóng một giao diện đã được xác nhận quyền sở hữu.

Thông số

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

  • interfaceNumber

    số

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

  • callback

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 116 trở lên

    Các promise 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()

Promise Không dùng nữa
chrome.usb.requestAccess(
  device: Device,
  interfaceId: number,
  callback?: function,
)
: Promise<boolean>

Hàm này dành riêng cho ChromeOS và sẽ không hoạt động nếu bạn gọi hàm này trên các nền tảng khác. Thao tác này hiện được thực hiện ngầm trong quá trình openDevice và hàm này sẽ trả về true trên tất cả các nền tảng.

Yêu cầu quyền truy cập từ trình môi giới quyền đối với một thiết bị do ChromeOS xác nhận quyền sở hữu nếu giao diện đã cho trên thiết bị đó chưa được xác nhận quyền sở hữu.

Thông số

  • thiết bị

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

  • interfaceId

    số

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

  • callback

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

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

    (success: boolean) => void

    • thành công

      boolean

Giá trị trả về

  • Promise<boolean>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.resetDevice(
  handle: ConnectionHandle,
  callback?: function,
)
: Promise<boolean>

Thử đặ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 sẽ xuất hiện ở trạng thái ngắt kết nối rồi 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 để có được thiết bị.

Thông số

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

  • callback

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

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

    (success: boolean) => void

    • thành công

      boolean

Giá trị trả về

  • Promise<boolean>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.setConfiguration(
  handle: ConnectionHandle,
  configurationValue: number,
  callback?: function,
)
: Promise<void>

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

Chức năng này sẽ đặ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 hiện có của thiết bị. Chỉ những 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ị có lỗi có cấu hình hoạt động 0 và do đó, giá trị này được phép.

Thông số

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

  • configurationValue

    số

  • callback

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 116 trở lên

    Các promise 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()

Promise
chrome.usb.setInterfaceAlternateSetting(
  handle: ConnectionHandle,
  interfaceNumber: number,
  alternateSetting: number,
  callback?: function,
)
: Promise<void>

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

Thông số

  • Một kết nối mở với thiết bị nơi 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.

  • callback

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 116 trở lên

    Các promise 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 đến những ứng dụng và tiện ích có quyền truy cập vào thiết bị. 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.

Thông số

  • callback

    hàm

    Tham số callback 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. Xem onDeviceAdded để biết những sự kiện nào được gửi.

Thông số

  • callback

    hàm

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

    (device: Device) => void