一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

USB管理

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

說明:
開發(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ù)結構
//此處提供一個簡單的示例,如下
[
  {
    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]獲取設備請求權限。

系統(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

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

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

參數(shù):

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

返回值:

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

示例:

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

usb.requestRight

requestRight(deviceName: string): Promise

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

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

參數(shù):

參數(shù)名類型必填說明
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作為參數(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

釋放注冊過的通信接口。

需要調用[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

設置設備配置。

需要調用[usb.getDevices]獲取設備信息以及config;調用[usb.requestRight]獲取設備請求權限;調用[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

設置設備接口。

需要調用[usb.getDevices]獲取設備列表以及interfaces;調用[usb.requestRight]獲取設備請求權限;調用[usb.connectDevice]得到devicepipe作為參數(shù);調用[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描述符。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[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

獲取文件描述符。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[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

控制傳輸。

需要調用[usb.getDevices]獲取設備列表;調用[usb.requestRight]獲取設備請求權限;調用[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

批量傳輸。

需要調用[usb.getDevices]獲取設備信息列表以及endpoint;再調用[usb.requestRight]獲取設備請求權限;然后調用[usb.connectDevice]接口得到返回數(shù)據(jù)devicepipe之后,再次獲取接口[usb.claimInterface];再調用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ù)集合,取其中一個設備對象,并獲取權限 。
//把獲取到的設備對象作為參數(shù)傳入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作為參數(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ù),從設備往主設備。

審核編輯 黃宇

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

    關注

    60

    文章

    8185

    瀏覽量

    272890
  • 鴻蒙
    +關注

    關注

    60

    文章

    2620

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

    設備管理系統(tǒng),終結設備管理難題

    設備管理系統(tǒng)已突破傳統(tǒng)工具定位,進化為企業(yè)資產(chǎn)管理的數(shù)字神經(jīng)中樞。通過"物聯(lián)感知-智能分析-決策優(yōu)化"的閉環(huán)體系,實現(xiàn)設備管理從被動響應到主動預防、從經(jīng)驗驅動到數(shù)據(jù)驅動的根本轉變。
    的頭像 發(fā)表于 03-04 10:51 ?481次閱讀
    <b class='flag-5'>設備管理</b>系統(tǒng),終結<b class='flag-5'>設備管理</b>難題

    物聯(lián)網(wǎng) + 設備管理,讓管理觸手可及

    物聯(lián)網(wǎng)技術快速發(fā)展,設備管理面臨三大挑戰(zhàn):分散、數(shù)據(jù)孤島、安全隱患。中設智控采用分層架構和智能維護模式,提高設備管理效率和安全性。物聯(lián)網(wǎng)設備管理“三板斧”包括分布式管理、智能維護和數(shù)據(jù)
    的頭像 發(fā)表于 02-28 10:08 ?707次閱讀
    物聯(lián)網(wǎng) + <b class='flag-5'>設備管理</b>,讓<b class='flag-5'>管理</b>觸手可及

    傳統(tǒng) VS 智能,這款設備管理系統(tǒng)讓管理大不同

    本文探討了傳統(tǒng)設備管理與智能設備管理的對比及中設智控的實踐案例,揭示了設備管理系統(tǒng)的未來圖景。智能設備管理通過實時監(jiān)控與預測性維護、全生命周期閉環(huán)
    的頭像 發(fā)表于 02-26 10:56 ?457次閱讀
    傳統(tǒng) VS 智能,這款<b class='flag-5'>設備管理</b>系統(tǒng)讓<b class='flag-5'>管理</b>大不同

    設備管理體系實施指南

    設備管理體系在保障生產(chǎn)運營基石、搭建交流學習平臺以及助力打造標桿典范等方面具有重要意義。組織應全面實施設備管理體系,提高設備管理效率和效果。
    的頭像 發(fā)表于 12-18 10:38 ?734次閱讀
    <b class='flag-5'>設備管理</b>體系實施指南

    TSW14J56EVM無論是上電后,還是上電前將usb線與電腦連接,設備管理器都無法找到該設備,為什么?

    TSW14J56EVM無論是上電后,還是上電前將usb線與電腦連接,設備管理器都無法找到該設備,打開HSDC軟件顯示沒有設備。但是換成新采購的同樣的
    發(fā)表于 12-13 06:42

    基于物聯(lián)網(wǎng)的設備管理

    物聯(lián)網(wǎng)設備管理的重要性日益凸顯,設備數(shù)量激增帶來數(shù)據(jù)泄露風險。加強設備安全性、軟件升級與修復、身份驗證和互操作性是關鍵。物聯(lián)網(wǎng)設備管理需要跨異構設備
    的頭像 發(fā)表于 09-10 11:04 ?1022次閱讀
    基于物聯(lián)網(wǎng)的<b class='flag-5'>設備管理</b>

    設備管理流程優(yōu)化的優(yōu)勢

    設備管理對企業(yè)生產(chǎn)效率、產(chǎn)品質量、成本控制和安全生產(chǎn)起著關鍵作用。但設備管理面臨挑戰(zhàn),如種類繁多、數(shù)量龐大、位置分散等。因此,企業(yè)應采用科學的設備管理方法,建立設備管理系統(tǒng),跟蹤
    的頭像 發(fā)表于 09-05 10:34 ?668次閱讀
    <b class='flag-5'>設備管理</b>流程優(yōu)化的優(yōu)勢

    設備管理——先進的工業(yè)設備管理模式與策略

    設備老化、故障率高、零部件供應不及時等問題中,先進的設備管理模式與策略被廣泛應用。化工企業(yè)在設備管理方面采取優(yōu)化措施,提高了維修效率和質量。
    的頭像 發(fā)表于 08-28 09:36 ?830次閱讀
    <b class='flag-5'>設備管理</b>——先進的工業(yè)<b class='flag-5'>設備管理</b>模式與策略

    企業(yè)設備管理的創(chuàng)新與優(yōu)化之道

    企業(yè)設備管理在提高生產(chǎn)效率、保證產(chǎn)品質量、降低運營成本方面發(fā)揮著關鍵作用。設備管理常見挑戰(zhàn)包括設備老化、維修困難。企業(yè)應優(yōu)化設備選型、采購規(guī)劃和維護策略,以提高
    的頭像 發(fā)表于 08-27 10:06 ?694次閱讀
    企業(yè)<b class='flag-5'>設備管理</b>的創(chuàng)新與優(yōu)化之道

    設備管理:優(yōu)化策略與未來展望

    設備管理在現(xiàn)代企業(yè)中占據(jù)著至關重要的地位,對生產(chǎn)效率和產(chǎn)品質量起著決定性作用。然而,當前的設備管理狀況仍存在一些問題,如管理理念偏差、維護手段滯后等。
    的頭像 發(fā)表于 08-23 10:35 ?744次閱讀
    <b class='flag-5'>設備管理</b>:優(yōu)化策略與未來展望

    設備管理系統(tǒng)的發(fā)展趨勢

    設備管理系統(tǒng)正朝著云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)等先進技術深度融合,實現(xiàn)個性化、移動化、云化發(fā)展,提高設備運行效率和可靠性。同時,設備管理系統(tǒng)將加強跨部門合作和知識共享,提升安全性。
    的頭像 發(fā)表于 08-14 09:49 ?1018次閱讀
    <b class='flag-5'>設備管理</b>系統(tǒng)的發(fā)展趨勢

    設備管理系統(tǒng):是什么、誰需要、推薦設備管理系統(tǒng)

    設備管理系統(tǒng)(EMS)在企業(yè)管理中愈發(fā)重要。中設智控設備管理系統(tǒng)以全生命周期管理為主,涵蓋預算、采購、維護等功能,支持移動端應用,降低備件儲備,提高
    的頭像 發(fā)表于 08-01 11:23 ?1438次閱讀
    <b class='flag-5'>設備管理</b>系統(tǒng):是什么、誰需要、推薦<b class='flag-5'>設備管理</b>系統(tǒng)