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

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

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

觸覺智能 ? 2025-09-30 16:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文介紹OpenHarmony開源鴻蒙系統(tǒng)USB控制傳輸功能實現(xiàn)及相關(guān)代碼示例,基于觸覺智能RK3576開發(fā)板Purple Pi OH2演示。

OpenHarmony的USB通信介紹

實現(xiàn)OpenHarmony開源鴻蒙設(shè)備與外部USB設(shè)備之間的連接管理、數(shù)據(jù)收發(fā)及設(shè)備信息交互,支持對USB 設(shè)備的枚舉、配置及數(shù)據(jù)傳輸控制,適用于各類USB接口進(jìn)行設(shè)備通信的場景。如AHD高清攝像頭、密碼鍵盤、檢測模塊等。

USB控制傳輸主要用于主機(jī)(Host)和設(shè)備(Device)進(jìn)行設(shè)備狀態(tài)的獲取和設(shè)置,進(jìn)行設(shè)備屬性狀態(tài)的的控制。根據(jù)設(shè)備支持的端點類型支持控制傳輸讀和寫。

示例環(huán)境:

1、僅支持開源鴻蒙OpenHarmony L2標(biāo)準(zhǔn)系統(tǒng)上運行;

2、本示例已適配 API version 12 版本 SDK(兼容 API version 8 及以上版本);

3、本示例為Stage模型,需要使用DevEco Studio 5.0.2 Release及以上版本才可編譯運行。;

核心功能模塊實現(xiàn)邏輯

USB通信流程整體可分為3塊組成:設(shè)備枚舉→設(shè)備連接→數(shù)據(jù)傳輸/接收,流程圖示:

wKgZPGjblNuARTImAANnBoKUGwo596.png

各流程示例代碼,請繼續(xù)瀏覽下文。

設(shè)備枚舉模塊

負(fù)責(zé)掃描并識別當(dāng)前連接的 USB 設(shè)備,獲取設(shè)備的基本信息(如設(shè)備ID、廠商 ID、產(chǎn)品 ID、接口類型等),基于 OpenHarmony 的 USB 服務(wù)接口實現(xiàn)設(shè)備列表的動態(tài)更新。代碼示例:

// 獲取USB設(shè)備列表 private getUsbDevices(): void { try { this.deviceList = usbManager.getDevices(); if (this.deviceList.length === 0) { this.log = '未檢測到USB設(shè)備'; } else { this.log = `找到 ${this.deviceList.length} 個USB設(shè)備`; } this.selectedDeviceIndex = -1; this.interfaces = []; this.endpoints = []; this.selectedInterfaceIndex = -1; this.selectedEndpointIndex = -1; this.isDeviceSelected = false; this.isReceiving = false; } catch (error) { this.log = `獲取設(shè)備列表失敗: ${error}`; console.error("獲取USB設(shè)備列表異常: ", error); } }

連接管理模塊

處理 USB 設(shè)備的連接與斷開邏輯,包括權(quán)限校驗、設(shè)備掛載狀態(tài)監(jiān)測及連接狀態(tài)回調(diào)通知,確保設(shè)備連接的穩(wěn)定性。代碼示例:

// 選擇設(shè)備 private async selectDevice(index: number): Promise { this.selectedDeviceIndex = index; this.selectedInterfaceIndex = -1; this.selectedEndpointIndex = -1; this.interfaces = []; this.endpoints = []; this.isDeviceSelected = false; this.isReceiving = false; try { let deviceName: string = this.deviceList[index].name;

// 申請操作指定設(shè)備的權(quán)限 let hasRight: boolean = await usbManager.requestRight(deviceName); console.info("usb device request right result: " + hasRight); if (!hasRight) { this.log = 'USB設(shè)備權(quán)限獲取失敗'; return; }


數(shù)據(jù)傳輸模塊

實現(xiàn)與 USB 設(shè)備的雙向數(shù)據(jù)傳輸,支持批量傳輸。主機(jī)→USB 設(shè)備進(jìn)行數(shù)據(jù)發(fā)送,適用于向 USB 設(shè)備發(fā)送配置命令、控制參數(shù)等場景,需選擇 OUT方向端點(端點地址 direction=0),流程包括:解析用戶輸入的16進(jìn)制數(shù)據(jù)、建立設(shè)備通信管道、聲明目標(biāo)接口、調(diào)用 usbManager.bulkTransfer() 發(fā)送數(shù)據(jù)。代碼示例

// 發(fā)送數(shù)據(jù)到設(shè)備 private async sendDataToDevice(): Promise { if (this.selectedDeviceIndex === -1 || this.selectedInterfaceIndex === -1 || this.selectedEndpointIndex === -1) { this.log = '請先選擇設(shè)備、接口和端點'; this.showSendDataDialog = false; return; } if (!this.sendDataContent.trim()) { this.log = '發(fā)送數(shù)據(jù)不能為空'; return; }

數(shù)據(jù)接收模塊

USB 設(shè)備→主機(jī)進(jìn)行數(shù)據(jù)發(fā)送,適用于從 USB 設(shè)備獲取狀態(tài)數(shù)據(jù)、采集數(shù)據(jù)等場景,需選擇 IN 方向端點(端點地址 direction=0x80),流程包括:建立設(shè)備通信管道、聲明目標(biāo)接口、循環(huán)調(diào)用 usbManager.bulkTransfer() 讀取數(shù)據(jù)、解析數(shù)據(jù)為十六進(jìn)制格式并展示。代碼示例:

// 開始接收數(shù)據(jù) private async startReceiveData(): Promise { if ( this.selectedDeviceIndex === -1 || this.selectedInterfaceIndex === -1 || this.selectedEndpointIndex === -1) { this.log = '請先選擇設(shè)備、接口和端點'; return ; }

更多代碼示例,請關(guān)注深圳觸覺智能電子發(fā)燒友

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

    關(guān)注

    60

    文章

    8438

    瀏覽量

    284407
  • 外設(shè)
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    12088
  • 鴻蒙開發(fā)板
    +關(guān)注

    關(guān)注

    1

    文章

    31

    瀏覽量

    4846
  • OpenHarmony
    +關(guān)注

    關(guān)注

    33

    文章

    3952

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于RK3576開發(fā)板的WDT看門狗使用說明

    RK3576開發(fā)板的WDT使用說明
    的頭像 發(fā)表于 05-06 17:15 ?1213次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的WDT看門狗使用說明

    基于RK3576開發(fā)板的PWN使用說明

    RK3576開發(fā)板使用PWN教程及Demo
    的頭像 發(fā)表于 05-07 14:07 ?2255次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的PWN使用說明

    基于RK3576開發(fā)板的RTC使用說明

    文章主要展示RK3576開發(fā)板的RTC信息和快速上手例程
    的頭像 發(fā)表于 05-07 15:04 ?2210次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的RTC使用說明

    基于RK3576開發(fā)板的人臉識別算法

    RK3576開發(fā)板展示人臉識別算法例程和API說明
    的頭像 發(fā)表于 05-07 16:48 ?2724次閱讀
    基于<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>的人臉識別算法

    【米爾RK3576開發(fā)板評測】+項目名稱【米爾RK3576開發(fā)板評測】一個視頻和你共同認(rèn)識一下米爾RK3576開發(fā)板

    的6TOPS算力開發(fā)板之一,已支持最新安卓14系統(tǒng)。 總體來說米爾RK3576開發(fā)板是值得大家花時間和精力去研究的一塊非常不錯的開發(fā)板
    發(fā)表于 12-18 20:50

    【作品合集】米爾RK3576開發(fā)板測評

    米爾RK3576開發(fā)板測評作品合集 產(chǎn)品介紹: RK3576 是瑞芯微一款面向AI市場推出的高性能處理器,它配備了四核Cortex-A72和四 核Cortex-A53 的 CPU,集成了6TOPS
    發(fā)表于 09-11 10:19

    米爾RK3576開發(fā)板特惠活動!

    近日,米爾電子發(fā)布基于瑞芯微RK3576核心開發(fā)板RK3576作為國產(chǎn)熱門處理器,其高性能數(shù)據(jù)處理能力、領(lǐng)先的AI智能分析、強(qiáng)大的擴(kuò)展
    的頭像 發(fā)表于 11-12 01:00 ?2221次閱讀
    米爾<b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>特惠活動!

    如何在開源鴻蒙OpenHarmony開啟SELinux模式?RK3566鴻蒙開發(fā)板演示

    本文介紹開源鴻蒙OpenHarmony系統(tǒng)下,開啟/關(guān)閉SELinux權(quán)限的方法,觸覺智能Pur
    的頭像 發(fā)表于 11-18 19:03 ?1464次閱讀
    如何在<b class='flag-5'>開源</b><b class='flag-5'>鴻蒙</b><b class='flag-5'>OpenHarmony</b>開啟SELinux模式?<b class='flag-5'>RK</b>3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)板</b>演示

    OpenHarmony屬性信息怎么修改?觸覺智能RK3566鴻蒙開發(fā)板來演示

    本文介紹開源鴻蒙OpenHarmony系統(tǒng)下,修改產(chǎn)品屬性信息的方法,觸覺智能Purple Pi
    的頭像 發(fā)表于 11-27 09:31 ?1410次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK</b>3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)板</b>來演示

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發(fā)板演示

    開源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺智能Purple Pi OH
    的頭像 發(fā)表于 12-24 11:46 ?1457次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK</b>3566<b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)板</b>演示

    Linux系統(tǒng)更換開機(jī)logo方法教程,觸覺智能RK3562開發(fā)板演示

    本文介紹Linux系統(tǒng)更換開機(jī)logo方法教程,通用RK3566、RK3568、RK3588、RK3576
    的頭像 發(fā)表于 01-06 10:53 ?1503次閱讀
    Linux<b class='flag-5'>系統(tǒng)</b>更換開機(jī)logo方法教程,<b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK</b>3562<b class='flag-5'>開發(fā)板</b>演示

    觸覺智能RK3576開發(fā)板通過OpenHarmony5.0 XTS認(rèn)證

    觸覺智能作為開源鴻蒙南向硬件廠家,旗下RK3576開發(fā)板及其核心
    的頭像 發(fā)表于 10-21 12:48 ?946次閱讀
    <b class='flag-5'>觸覺</b><b class='flag-5'>智能</b><b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>通過<b class='flag-5'>OpenHarmony</b>5.0 XTS認(rèn)證

    迅為如何在RK3576上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)

    迅為如何在RK3576開發(fā)板上部署YOLOv5;基于RK3576構(gòu)建智能門禁系統(tǒng)
    的頭像 發(fā)表于 11-25 14:06 ?1789次閱讀
    迅為如何在<b class='flag-5'>RK3576</b>上部署YOLOv5;基于<b class='flag-5'>RK3576</b>構(gòu)建<b class='flag-5'>智能</b>門禁<b class='flag-5'>系統(tǒng)</b>

    RK3576基于UVC協(xié)議USB攝像頭配置指南,手把手教你搞定

    瑞芯微RK3576芯片平臺基于UVC協(xié)議,配置USB攝像頭實現(xiàn)即插即用的適配采集功能,基于觸覺智能RK3
    的頭像 發(fā)表于 01-16 17:11 ?804次閱讀
    <b class='flag-5'>RK3576</b>基于UVC協(xié)議<b class='flag-5'>USB</b>攝像頭配置指南,手把手教你搞定

    RK3576開發(fā)板OpenGL性能大起底,這數(shù)據(jù)我真的服了

    瑞芯微RK3576芯片作為一款中高端的八核Arm架構(gòu)嵌入式處理器,集成Mali-G52MC3的GPU。本次OpenGL性能測試,基于觸覺智能RK3576
    的頭像 發(fā)表于 01-16 17:20 ?1571次閱讀
    <b class='flag-5'>RK3576</b><b class='flag-5'>開發(fā)板</b>OpenGL性能大起底,這數(shù)據(jù)我真的服了