鴻蒙開發設備管理:【@ohos.usb (USB管理)】

USB管理

本模塊主要提供管理USB設備的相關功能,包括查詢USB設備列表、批量數據傳輸、控制命令傳輸、權限控制等。

說明:

本模塊首批接口從API version 8開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。

導入模塊

import usb from "@ohos.usb";

usb.getDevices

getDevices(): Array<Readonly>

獲取USB設備列表。

系統能力: SystemCapability.USB.USBManager

返回值:

類型說明
Array<Readonly<[USBDevice]>>設備信息列表。

示例:

let devicesList = usb.getDevices();
console.log(`devicesList = ${JSON.stringify(devicesList)}`);
//devicesList  返回的數據結構
//此處提供一個簡單的示例,如下
[{name: "1-1",serial: "",manufacturerName: "",productName: "",version: "",vendorId: 7531,productId: 2,clazz: 9,subclass: 0,protocol: 1,devAddress: 1,busNum: 1,configs: [{id: 1,attributes: 224,isRemoteWakeup: true,isSelfPowered: true,maxPower: 0,name: "1-1",interfaces: [{id: 0,protocol: 0,clazz: 9,subclass: 0,alternateSetting: 0,name: "1-1",endpoints: [{address: 129,attributes: 3,interval: 12,maxPacketSize: 4,direction: 128,number: 1,type: 3,interfaceId: 0,},],},],},],},
]

usb.connectDevice

connectDevice(device: USBDevice): Readonly

打開USB設備。

需要調用[usb.getDevices]獲取設備信息以及device;再調用[usb.requestRight]獲取設備請求權限。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
device[USBDevice]USB設備信息。

返回值:

類型說明
Readonly<[USBDevicePipe]>指定的傳輸通道對象。

示例:

let devicepipe= usb.connectDevice(device);
console.log(`devicepipe = ${JSON.stringify(devicepipe)}`);

usb.hasRight

hasRight(deviceName: string): boolean

判斷是否有權訪問該設備。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
deviceNamestring設備名稱。

返回值:

類型說明
booleantrue表示有訪問設備的權限,false表示沒有訪問設備的權限。

示例:

let devicesName="1-1";
let bool = usb.hasRight(devicesName);
console.log(bool);

usb.requestRight

requestRight(deviceName: string): Promise

請求軟件包的臨時權限以訪問設備。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
deviceNamestring設備名稱。

返回值:

類型說明
Promise獲取到true則表示軟件包的臨時權限已訪問成功, 獲取到false則表示軟件包的臨時權限已訪問失敗。

示例:

let devicesName="1-1";
usb.requestRight(devicesName).then((ret) => {console.log(`requestRight = ${JSON.stringify(ret)}`);
});

usb.claimInterface

claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): number

注冊通信接口。

需要調用[usb.getDevices]獲取設備信息以及interfaces;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]接口得到devicepipe作為參數。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定總線號和設備地址。
iface[USBInterface]用于確定需要獲取接口的索引。
forceboolean可選參數,是否強制獲取。默認值false ,表示不強制獲取。

返回值:

類型說明
number注冊通信接口成功返回0;注冊通信接口失敗返回其他錯誤碼。

示例:

let ret = usb.claimInterface(devicepipe, interfaces);
console.log(`claimInterface = ${ret}`);

usb.releaseInterface

releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number

釋放注冊過的通信接口。

需要調用[usb.claimInterface]先獲取接口,才能使用此方法釋放接口。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定總線號和設備地址。
iface[USBInterface]用于確定需要釋放接口的索引。

返回值:

類型說明
number釋放接口成功返回0;釋放接口失敗返回其他錯誤碼。

示例:

let ret = usb.releaseInterface(devicepipe, interfaces);
console.log(`releaseInterface = ${ret}`);

usb.setConfiguration

setConfiguration(pipe: USBDevicePipe, config: USBConfig): number

設置設備配置。

需要調用[usb.getDevices]獲取設備信息以及config;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]得到devicepipe作為參數。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定總線號和設備地址。
config[USBConfig]用于確定需要設置的配置。

返回值:

類型說明
number設置設備配置成功返回0;設置設備配置失敗返回其他錯誤碼。

示例:

let ret = usb.setConfiguration(devicepipe, config);
console.log(`setConfiguration = ${ret}`);

usb.setInterface

setInterface(pipe: USBDevicePipe, iface: USBInterface): number

設置設備接口。

需要調用[usb.getDevices]獲取設備列表以及interfaces;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]得到devicepipe作為參數;調用[usb.claimInterface]注冊通信接口。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定總線號和設備地址。
iface[USBInterface]用于確定需要設置的接口。

返回值:

類型說明
number設置設備接口成功返回0;設置設備接口失敗返回其他錯誤碼。

示例:

let ret = usb.setInterface(devicepipe, interfaces);
console.log(`setInterface = ${ret}`);

usb.getRawDescriptor

getRawDescriptor(pipe: USBDevicePipe): Uint8Array

獲取原始的USB描述符。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]接口得到devicepipe作為參數。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定總線號和設備地址。

返回值:

類型說明
Uint8Array返回獲取的原始數據;失敗返回undefined。

示例:

let ret = usb.getRawDescriptor(devicepipe);

usb.getFileDescriptor

getFileDescriptor(pipe: USBDevicePipe): number

獲取文件描述符。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]接口得到devicepipe作為參數。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定總線號和設備地址。

返回值:

類型說明
number返回設備對應的文件描述符;失敗返回-1。

示例:

let ret = usb.getFileDescriptor(devicepipe);

usb.controlTransfer

controlTransfer(pipe: USBDevicePipe, contrlparam: USBControlParams, timeout?: number): Promise

控制傳輸。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]接口得到devicepipe作為參數。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定設備。
contrlparam[USBControlParams]控制傳輸參數。
timeoutnumber超時時間,可選參數,默認為0不超時。

返回值:

類型說明
Promise獲取傳輸或接收到的數據塊大小, 獲取到-1則表示異常。

示例:

usb.controlTransfer(devicepipe, USBControlParams).then((ret) => {console.log(`controlTransfer = ${JSON.stringify(ret)}`);
})

usb.bulkTransfer

bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout?: number): Promise

批量傳輸。

需要調用[usb.getDevices]獲取設備信息列表以及endpoint;再調用[usb.requestRight]獲取設備請求權限;然后調用[usb.connectDevice]接口得到返回數據devicepipe之后,再次獲取接口[usb.claimInterface];再調用usb.bulkTransfer接口。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定設備。
endpoint[USBEndpoint]用于確定傳輸的端口。
bufferUint8Array用于寫入或讀取的緩沖區。
timeoutnumber超時時間,可選參數,默認為0不超時。

返回值:

類型說明
Promise獲取傳輸或接收到的數據塊大小, 獲取到-1則表示異常。

示例:

//usb.getDevices 接口返回數據集合,取其中一個設備對象,并獲取權限 。
//把獲取到的設備對象作為參數傳入usb.connectDevice;當usb.connectDevice接口成功返回之后;
//才可以調用第三個接口usb.claimInterface.當usb.claimInterface 調用成功以后,再調用該接口。
usb.bulkTransfer(devicepipe, endpoint, buffer).then((ret) => {console.log(`bulkTransfer = ${JSON.stringify(ret)}`);
});

usb.closePipe

closePipe(pipe: USBDevicePipe): number

關閉設備消息控制通道。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]得到devicepipe作為參數。

系統能力: SystemCapability.USB.USBManager

參數:

參數名類型必填說明
pipe[USBDevicePipe]用于確定USB設備消息控制通道。

返回值:

類型說明
number關閉設備消息控制通道成功返回0;關閉設備消息控制通道失敗返回其他錯誤碼。

示例:

let ret = usb.closePipe(devicepipe);
console.log(`closePipe = ${ret}`);

USBEndpoint

通過USB發送和接收數據的端口。通過[USBInterface]獲取。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱參數類型說明
addressnumber端點地址。
attributesnumber端點屬性。
intervalnumber端點間隔。
maxPacketSizenumber端點最大數據包大小。
direction[USBRequestDirection]端點的方向。
numbernumber端點號。
typenumber端點類型。
interfaceIdnumber端點所屬的接口的唯一標識。

USBInterface

一個[USBConfig]中可以含有多個USBInterface,每個USBInterface提供一個功能。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱參數類型說明
idnumber接口的唯一標識。
protocolnumber接口的協議。
clazznumber設備類型。
subClassnumber設備子類。
alternateSettingnumber在同一個接口中的多個描述符中進行切換設置。
namestring接口名稱。
endpointsArray<[USBEndpoint]>當前接口所包含的端點。

USBConfig

USB配置,一個[USBDevice]中可以含有多個配置。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱參數類型說明
idnumber配置的唯一標識。
attributesnumber配置的屬性。
maxPowernumber最大功耗,以毫安為單位。
namestring配置的名稱,可以為空。
isRemoteWakeupboolean檢查當前配置是否支持遠程喚醒。
isSelfPoweredboolean檢查當前配置是否支持獨立電源。
interfacesArray <[USBInterface]>配置支持的接口屬性。

USBDevice

USB設備信息。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱參數類型說明
busNumnumber總線地址。
devAddressnumber設備地址。
serialstring序列號。
namestring設備名字。
manufacturerNamestring產商信息。
productNamestring產品信息。
versionstring版本。
vendorIdnumber廠商ID。
productIdnumber產品ID。
clazznumber設備類。
subClassnumber設備子類。
protocolnumber設備協議碼。
configsArray<[USBConfig]>設備配置描述符信息。

USBDevicePipe

USB設備消息傳輸通道,用于確定設備。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱參數類型說明
busNumnumber總線地址。
devAddressnumber設備地址。

USBControlParams

控制傳輸參數。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱參數類型說明
requestnumber請求類型。
target[USBRequestTargetType]請求目標類型。
reqType[USBControlRequestType]請求控制類型。
valuenumber請求參數。
indexnumber請求參數value對應的索引值。
dataUint8Array用于寫入或讀取的緩沖區。

USBRequestTargetType

請求目標類型。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱默認值說明
USB_REQUEST_TARGET_DEVICE0設備。
USB_REQUEST_TARGET_INTERFACE1接口。
USB_REQUEST_TARGET_ENDPOINT2端點。
USB_REQUEST_TARGET_OTHER3其他。

USBControlRequestType

控制請求類型。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱默認值說明
USB_REQUEST_TYPE_STANDARD0標準。
USB_REQUEST_TYPE_CLASS1類。
USB_REQUEST_TYPE_VENDOR2廠商。

USBRequestDirection

請求方向。

系統能力:以下各項對應的系統能力均為 SystemCapability.USB.USBManager。

名稱默認值說明
USB_REQUEST_DIR_TO_DEVICE0寫數據,主設備往從設備。
USB_REQUEST_DIR_FROM_DEVICE0x80讀數據,從設備往主設備。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40351.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JavaScript腳本宇宙】優化你的Web色彩:精選JavaScript顏色工具對比

萬能色彩助手&#xff1a;詳解最受歡迎的JavaScript顏色庫 前言 在現代Web開發中&#xff0c;顏色處理和轉換是一個不可忽視的環節。無論是網站設計、數據可視化還是用戶界面開發&#xff0c;都離不開對顏色的精確控制和轉換。為了滿足這一需求&#xff0c;眾多JavaScript庫應…

Toocaa Studio已開發的功能

2024年07月01日 Toocaa Studio 一個激光切割雕刻機的上位機&#xff0c; 未來會對標Xtool的xTool Creative Space和LightBurn&#xff0c;同時它也是一款圖形編輯器&#xff0c;矢量圖形編輯器。 工具類 鼠標畫矩形或正方形 鼠標畫橢圓或畫圓 鼠標畫直線或軌跡路徑 往畫布中…

你的機器人購物新體驗——安全、高效、無憂

如果你跟我一樣&#xff0c;對找到那些“恰到好處”的商品充滿渴望&#xff0c;那么&#xff0c;讓我來告訴你為什么BFT會成為你的下一個購物“心頭好”。 BFT的優勢 高效安全的支付體系&#xff1a;BFT交易系統保障了交易的安全性和透明性&#xff0c;讓你的每一筆消費都安全…

Build a Large Language Model (From Scratch)附錄B(gpt-4o翻譯版)

來源&#xff1a;https://github.com/rasbt/LLMs-from-scratch?tabreadme-ov-file https://www.manning.com/books/build-a-large-language-model-from-scratch

《More Effective C++》《雜項討論——34、如何在同一個程序中結合C++和C》

文章目錄 1、Terms34:如何在同一個程序中結合C和C1.1 名稱重整1.2 statics的初始化1.3 動態內存的分配1.4 數據結構的兼容性 2、總結3、參考 1、Terms34:如何在同一個程序中結合C和C 在大型項目中一般都用C進行開發&#xff0c;但是不可避免會用一些C語言進行底層的調用。在確…

【寵粉贈書】UML 2.5基礎、建模與設計實踐

為了回饋粉絲們的厚愛&#xff0c;今天小智給大家送上一套系統建模學習的必備書籍——《UML 2.5基礎、建模與設計實踐》。下面我會詳細給大家介紹這本書&#xff0c;文末留有領取方式。 圖書介紹 《UML 2.5基礎、建模與設計實踐》以實戰為主旨&#xff0c;結合draw.io免費軟件…

匿名內部類

下面代碼中&#xff0c;Person24 是一個抽象類&#xff0c;這意味著它不能被直接實例化&#xff0c;只能通過繼承它的子類來實現其抽象方法。代碼片段中展示了如何使用匿名內部類來實現一個抽象類的實例。 package chapter04;public class Java24_Object_匿名內部類 {public s…

verilog行為建模(三):塊語句

目錄 1.塊語句2.延遲賦值語句 微信公眾號獲取更多FPGA相關源碼&#xff1a; 1.塊語句 塊語句用來將多個語句組織在一起&#xff0c;使得他們在語法上如同一個語句。 塊語句分為兩類&#xff1a; 順序塊&#xff1a;語句置于關鍵字begin和end之間&#xff0c;塊中的語句以順…

鴻蒙‘ohpm‘ 不是內部或外部命令,也不是可運行的程序-解決方案

&#x1f525; 博客主頁&#xff1a; 小韓本韓&#xff01; ?? 感謝大家點贊&#x1f44d;收藏?評論?? 在鴻蒙的DevEco Studio的終端下輸入 onpm -v 或者 你需要下載第三方ohpm包的時候提示‘ohpm‘ 不是內部或外部命令&#xff0c;也不是可運行的程序- 主要是因為我們…

學習測試1

計算機基礎 1、計算機范式&#xff1a;馮諾依曼機 2、存儲單元 bit、byte、KB、MB、GB3、網絡 ip、域名、ping 域名、 ipconfig測試工作的流程 ------------------------------------------------------------------------------------------- 一 編寫測試大綱 羅列測試…

C++STL函數對象的應用

STL函數對象 文章目錄 STL函數對象1.基本概念2.使用方法1. 簡單函數對象示例2. 函數對象作為算法參數3. Lambda表達式作為函數對象 2.一元謂詞和二元謂詞1.一元謂詞2.二元謂詞3.總結 3.算術仿函數1.使用示例2.Lambda表達式的替代 4.關系仿函數5.邏輯仿函數 C中的函數對象&#…

文化創新與社交媒體:探索Facebook的足跡

在過去的十多年里&#xff0c;Facebook從一個簡單的校園社交網絡發展成為全球最大的社交媒體平臺之一。它不僅改變了人們的溝通方式&#xff0c;更在許多方面推動了文化的創新和變革。本文將深入探索Facebook如何通過其平臺的演進和功能創新&#xff0c;成為文化創新的重要推動…

Ubuntu / Debian安裝FTP服務

本章教程,記錄在Ubuntu中安裝FTP服務的具體步驟。FTP默認端口:21 1、安裝 pure-ftpd sudo apt-get install pure-ftpd2、修改默認配置 # 與 centos 不同,這里需要在 /etc/pure-ftpd/conf 文件夾下執行下列命令,增加對應配置文件: # 創建 /etc/pure-ftpd/conf/PureDB 文件…

【數據結構】(6.2)堆的應用——Top-K問題(C語言)

系列文章目錄 文章目錄 系列文章目錄問題引入一、TopK 問題 是什么&#xff1f;二、TopK 問題解決思路2.1 TopK 思路2.2 隨機產生數字2.2 完整代碼2.3 驗證結果 問題引入 TopK 問題 (在一堆數據里面找到前 K 個最大 / 最小的數)。 一、TopK 問題 是什么&#xff1f; 生活中也…

2024 最新docker倉庫鏡像,6月,7月

目前下面的docker倉庫鏡像源還能使用。 vi /etc/docker/daemon.json添加如下配置{"registry-mirrors": ["https://hub.uuuadc.top", "https://docker.anyhub.us.kg", "https://dockerhub.jobcher.com", "https://dockerhub.icu&…

船舶雷達與導航系統選擇7/8防水插座的原因分析

概述 船舶雷達與導航系統在現代航海中扮演著至關重要的角色&#xff0c;它們為船舶提供準確的導航信息&#xff0c;確保航行的安全和效率。在這些系統中&#xff0c;7/8防水插座的使用尤為重要&#xff0c;因為它們能夠在惡劣的海上環境中提供穩定的電力和信號連接。接下來&am…

python的os.walk()

os.walk() 是一個非常有用的函數&#xff0c;用于在Python中遍歷文件夾樹。它返回一個生成器&#xff0c;該生成器在每次迭代時返回一個包含三個元素的元組&#xff1a;(當前文件夾的路徑&#xff0c;文件夾中的子文件夾的列表&#xff0c;文件夾中的文件的列表)。這個函數對于…

左耳聽風_007_06_如何才能擁有技術領導力

你好&#xff0c;我是陳浩老明左耳朵house.那通過上節課呢&#xff0c;相信你現在已經理解了什么才是技術領導力。 那今天呢我就來跟你繼續聊一聊怎樣才能擁有技術領導力。 首先呢你需要吃透基礎技術。 因為基礎技術啊是各種上層技術共同的技術。 吃透基礎技術是為了更好的…

Outlook發送大文件的問題是什么?怎么解決?

Outlook不僅是一款電子郵件客戶端&#xff0c;還包括日歷、任務、筆記、聯系人等功能&#xff0c;同時與Microsoft Office套件中的其他應用程序&#xff08;如Word、Excel、PowerPoint等&#xff09;集成緊密&#xff0c;方便用戶在不同應用程序之間切換&#xff0c;提高工作效…

LLM - 神經網絡的組成

1. 一個神經元的結構&#xff1a;即接受多個輸入X向量&#xff0c;在一個權重向量W和一個偏執標量b的作用下&#xff0c;經過激活函數后&#xff0c;產生一個輸出。 2. 一層神經網絡的結構&#xff1a;該層網絡里的每個神經元并行計算&#xff0c;得到各自的輸出;計算方式是輸入…