91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙開發(fā)設備管理:ohos.usb USB管理

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-07-05 17:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

USB管理

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

說明:
開發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

導入模塊

import usb from "@ohos.usb";

usb.getDevices

getDevices(): Array>

獲取USB設備列表。

系統(tǒng)能力: SystemCapability.USB.USBManager

返回值:

類型說明
Array>設備信息列表。

示例:

let devicesList = usb.getDevices();
console.log(`devicesList = ${JSON.stringify(devicesList)}`);
//devicesList  返回的數(shù)據(jù)結(jié)構(gòu)
//此處提供一個簡單的示例,如下
[
  {
    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設備。

需要調(diào)用[usb.getDevices]獲取設備信息以及device;再調(diào)用[usb.requestRight]獲取設備請求權(quán)限。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

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

usb.hasRight

hasRight(deviceName: string): boolean

判斷是否有權(quán)訪問該設備。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

參數(shù)名類型必填說明
deviceNamestring設備名稱。

返回值:

類型說明
booleantrue表示有訪問設備的權(quán)限,false表示沒有訪問設備的權(quán)限。

示例:

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

usb.requestRight

requestRight(deviceName: string): Promise

請求軟件包的臨時權(quán)限以訪問設備。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

參數(shù)名類型必填說明
deviceNamestring設備名稱。

返回值:

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

示例:

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

注冊通信接口

需要調(diào)用[usb.getDevices]獲取設備信息以及interfaces;調(diào)用[usb.requestRight]獲取設備請求權(quán)限;調(diào)用[usb.connectDevice]接口得到devicepipe作為參數(shù)。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

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

usb.releaseInterface

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

釋放注冊過的通信接口。

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

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

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

usb.setConfiguration

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

設置設備配置。

需要調(diào)用[usb.getDevices]獲取設備信息以及config;調(diào)用[usb.requestRight]獲取設備請求權(quán)限;調(diào)用[usb.connectDevice]得到devicepipe作為參數(shù)。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

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

usb.setInterface

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

設置設備接口。

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

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

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

usb.getRawDescriptor

getRawDescriptor(pipe: USBDevicePipe): Uint8Array

獲取原始的USB描述符。

需要調(diào)用[usb.getDevices]獲取設備列表;調(diào)用[usb.requestRight]獲取設備請求權(quán)限;調(diào)用[usb.connectDevice]接口得到devicepipe作為參數(shù)。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

類型說明
Uint8Array返回獲取的原始數(shù)據(jù);失敗返回undefined。

示例:

let ret = usb.getRawDescriptor(devicepipe);

usb.getFileDescriptor

getFileDescriptor(pipe: USBDevicePipe): number

獲取文件描述符。

需要調(diào)用[usb.getDevices]獲取設備列表;調(diào)用[usb.requestRight]獲取設備請求權(quán)限;調(diào)用[usb.connectDevice]接口得到devicepipe作為參數(shù)。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

let ret = usb.getFileDescriptor(devicepipe);

usb.controlTransfer

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

控制傳輸。

需要調(diào)用[usb.getDevices]獲取設備列表;調(diào)用[usb.requestRight]獲取設備請求權(quán)限;調(diào)用[usb.connectDevice]接口得到devicepipe作為參數(shù)。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

類型說明
Promise獲取傳輸或接收到的數(shù)據(jù)塊大小, 獲取到-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

批量傳輸。

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

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

參數(shù)名類型必填說明
pipe[USBDevicePipe]用于確定設備。
endpoint[USBEndpoint]用于確定傳輸?shù)?a target="_blank">端口。
bufferUint8Array用于寫入或讀取的緩沖區(qū)。
timeoutnumber超時時間,可選參數(shù),默認為0不超時。

返回值:

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

示例:

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

usb.closePipe

closePipe(pipe: USBDevicePipe): number

關閉設備消息控制通道。

需要調(diào)用[usb.getDevices]獲取設備列表;調(diào)用[usb.requestRight]獲取設備請求權(quán)限;調(diào)用[usb.connectDevice]得到devicepipe作為參數(shù)。

系統(tǒng)能力: SystemCapability.USB.USBManager

參數(shù):

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

返回值:

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

示例:

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

USBEndpoint

通過USB發(fā)送和接收數(shù)據(jù)的端口。通過[USBInterface]獲取。

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBInterface

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

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBConfig

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

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBDevice

USB設備信息。

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBDevicePipe

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

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBControlParams

控制傳輸參數(shù)。

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBRequestTargetType

請求目標類型。

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

USBControlRequestType

控制請求類型。

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

名稱默認值說明
USB_REQUEST_TYPE_STANDARD0標準。
USB_REQUEST_TYPE_CLASS1類。
USB_REQUEST_TYPE_VENDOR2廠商。HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

搜狗高速瀏覽器截圖20240326151450.png

USBRequestDirection

請求方向。

系統(tǒng)能力 :以下各項對應的系統(tǒng)能力均為 SystemCapability.USB.USBManager。

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    8441

    瀏覽量

    284615
  • 鴻蒙
    +關注

    關注

    60

    文章

    2963

    瀏覽量

    45919
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    LTC4410 USB 電源管理器:高效電源管理解決方案

    LTC4410 USB 電源管理器:高效電源管理解決方案 在當今的便攜式電子設備領域,高效且可靠的電源管理至關重要。Linear Techn
    的頭像 發(fā)表于 02-10 11:05 ?211次閱讀

    2025開放原子開發(fā)者大會開源算力設備管理軟件分論壇即將啟幕

    數(shù)字浪潮,奔涌向前。算力設備的智能化管理與開源技術的深度融合,正成為驅(qū)動行業(yè)變革的核心引擎。作為開源算力設備管理領域的新銳力量,openUBMC致力于通過開源模式,打造開放、易用的管理軟件開發(fā)
    的頭像 發(fā)表于 11-17 16:33 ?922次閱讀

    觸覺智能RK3576開發(fā)板OpenHarmony開源鴻蒙系統(tǒng)USB控制傳輸功能示例

    OpenHarmony開源鴻蒙設備與外部USB設備之間的連接管理、數(shù)據(jù)收發(fā)及設備信息交互,支持對
    的頭像 發(fā)表于 09-30 16:31 ?1581次閱讀
    觸覺智能RK3576<b class='flag-5'>開發(fā)</b>板OpenHarmony開源<b class='flag-5'>鴻蒙</b>系統(tǒng)<b class='flag-5'>USB</b>控制傳輸功能示例

    不止 IoT 聯(lián)網(wǎng):設備管理系統(tǒng)現(xiàn)在還能做這些事

    當下市場競爭激烈,提升設備管理水平是企業(yè)降本增效的關鍵。引入先進設備管理系統(tǒng),不僅能減少故障損失、提高產(chǎn)效與質(zhì)量,更能為數(shù)字化轉(zhuǎn)型、可持續(xù)發(fā)展奠基。若企業(yè)正面臨設備故障多、停機久、管理
    的頭像 發(fā)表于 09-03 14:08 ?660次閱讀
    不止 IoT 聯(lián)網(wǎng):<b class='flag-5'>設備管理</b>系統(tǒng)現(xiàn)在還能做這些事

    別讓設備 “拖后腿”!這款設備管理系統(tǒng),幫制造企業(yè)省心又增效

    現(xiàn)在越來越多制造企業(yè)都在靠設備管理系統(tǒng) “提效降本”,畢竟在競爭越來越激烈的市場里,誰能把設備管得好、用得好,誰就能占得先機。 如果你家車間還在為設備管理頭疼,不妨試試設備管理系統(tǒng)
    的頭像 發(fā)表于 09-01 09:58 ?564次閱讀
    別讓<b class='flag-5'>設備</b> “拖后腿”!這款<b class='flag-5'>設備管理</b>系統(tǒng),幫制造企業(yè)省心又增效

    用勤哲Excel服務器自主開發(fā)軟件促進設備管理工作數(shù)字化

    和信息的處理交給計算機軟件系統(tǒng),設備管理部經(jīng)過長期的摸索、試用,自主開發(fā)了一套設備管理軟件系統(tǒng)。本篇論文介紹了設備管理軟件開發(fā)中的難點問題,設備管理
    的頭像 發(fā)表于 08-28 11:23 ?1034次閱讀

    重構(gòu)工業(yè)設備管理新范式:解析設備遠程運維管理系統(tǒng)的變革邏輯

    設備管理的時空限制,實現(xiàn)了從 “被動維修” 到 “主動預防”、從 “經(jīng)驗判斷” 到 “數(shù)據(jù)決策” 的轉(zhuǎn)型,成為提升工業(yè)設備綜合效率、降低運維成本的核心支撐。其在工業(yè)領域的深度應用,正重塑設備管理的全流程,為離散制造、流程工
    的頭像 發(fā)表于 08-20 16:58 ?886次閱讀

    K230設備管理器里面沒有COM是怎么回事?

    我的K230連接電腦后,設備管理器里面沒有新的USB串行設備(COMx),電腦也沒有彈出CanMV設備,我看設備管理器里面只有一個“其他
    發(fā)表于 08-04 08:04

    工業(yè)設備管理平物聯(lián)網(wǎng)臺有哪些內(nèi)容

    工業(yè)設備管理平臺是針對工業(yè)企業(yè)設備全生命周期管理需求開發(fā)的數(shù)字化系統(tǒng),通過整合設備數(shù)據(jù)、流程管理
    的頭像 發(fā)表于 07-04 16:09 ?690次閱讀

    使用CYUSB3014作為USB3.0數(shù)據(jù)傳輸方案,USB3.0無法識別是什么原因?

    從I2C ROM加載固件后,在Windows設備管理器中可以看到對應的FX3設備,如下圖 但是此時cypress control center中無法識別到USB接口,如下圖。自開發(fā)
    發(fā)表于 05-29 06:48

    CYUSBS234無法使用USB串口怎么解決?

    串行 DK 設置。 然后,我的電腦上的設備管理中沒有 com 端口。 此外,設備管理中沒有 CypressUsbConsoleWindowsDriver。 我的操作系統(tǒng)是 Windows 11。 我需要找到解決這個問題的方法。
    發(fā)表于 05-16 07:27

    3014 USB驅(qū)動程序無法檢測到USB設備是怎么回事?

    計數(shù)會少于 1,但是 Windows 計算機的設備管理已經(jīng)找到該USB設備,導致我們無法下載固件到USB 3014。
    發(fā)表于 05-09 06:11

    在USBBulkSourceSink示例中,F(xiàn)X3強制全速并在設備管理器上顯示黃色感嘆號,怎么解決?

    設備管理器中看到,但帶有黃色標記。 并且USBtreeview可以找出問題:10(CM_PROB_FAILED_START)。 SDK 版本 1.3.3 和 1.3.5 也會發(fā)生同樣的情況。 另外,如果你
    發(fā)表于 05-09 06:09

    設備管理系統(tǒng)的功能架構(gòu)與核心價值

    設備管理系統(tǒng)作為現(xiàn)代企業(yè)資產(chǎn)管理的重要組成部分,通過信息化手段實現(xiàn)對各類設備的全生命周期管理。該系統(tǒng)整合物聯(lián)網(wǎng)、大數(shù)據(jù)分析等技術,構(gòu)建起覆蓋設備
    的頭像 發(fā)表于 05-06 15:46 ?800次閱讀

    設備管理系統(tǒng)新范式:區(qū)塊鏈存證+動態(tài)權(quán)限管理

    企業(yè)面對數(shù)字化轉(zhuǎn)型挑戰(zhàn),設備管理面臨安全與靈活性問題。傳統(tǒng)設備管理方案漏洞頻出,數(shù)據(jù)易遭篡改,權(quán)限管理僵化。企業(yè)需構(gòu)建區(qū)塊鏈存證+動態(tài)權(quán)限管理方案,提升
    的頭像 發(fā)表于 03-13 10:41 ?1042次閱讀
    <b class='flag-5'>設備管理</b>系統(tǒng)新范式:區(qū)塊鏈存證+動態(tài)權(quán)限<b class='flag-5'>管理</b>