本文介绍OpenHarmony开源鸿蒙系统的USB控制传输功能实现及相关代码示例,基于触觉智能RK3576开发板Purple Pi OH2演示。
OpenHarmony的USB通信介绍
实现OpenHarmony开源鸿蒙设备与外部USB设备之间的连接管理、数据收发及设备信息交互,支持对USB 设备的枚举、配置及数据传输控制,适用于各类USB接口进行设备通信的场景。如AHD高清摄像头、密码键盘、检测模块等。
USB控制传输主要用于主机(Host)和设备(Device)进行设备状态的获取和设置,进行设备属性状态的的控制。根据设备支持的端点类型支持控制传输读和写。
示例环境:
1、仅支持开源鸿蒙OpenHarmony L2标准系统上运行;
2、本示例已适配 API version 12 版本 SDK(兼容 API version 8 及以上版本);
3、本示例为Stage模型,需要使用DevEco Studio 5.0.2 Release及以上版本才可编译运行。;
核心功能模块实现逻辑
USB通信流程整体可分为3块组成:设备枚举→设备连接→数据传输/接收,流程图示:
各流程示例代码,请继续浏览下文。
设备枚举模块
负责扫描并识别当前连接的 USB 设备,获取设备的基本信息(如设备ID、厂商 ID、产品 ID、接口类型等),基于 OpenHarmony 的 USB 服务接口实现设备列表的动态更新。代码示例:
// 获取USB设备列表 private getUsbDevices(): void { try { this.deviceList = usbManager.getDevices(); if (this.deviceList.length === 0) { this.log = '未检测到USB设备'; } else { this.log = `找到 ${this.deviceList.length} 个USB设备`; } this.selectedDeviceIndex = -1; this.interfaces = []; this.endpoints = []; this.selectedInterfaceIndex = -1; this.selectedEndpointIndex = -1; this.isDeviceSelected = false; this.isReceiving = false; } catch (error) { this.log = `获取设备列表失败: ${error}`; console.error("获取USB设备列表异常: ", error); } }
连接管理模块
处理 USB 设备的连接与断开逻辑,包括权限校验、设备挂载状态监测及连接状态回调通知,确保设备连接的稳定性。代码示例:
// 选择设备 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;
// 申请操作指定设备的权限 let hasRight: boolean = await usbManager.requestRight(deviceName); console.info("usb device request right result: " + hasRight); if (!hasRight) { this.log = 'USB设备权限获取失败'; return; }
数据传输模块
实现与 USB 设备的双向数据传输,支持批量传输。主机→USB 设备进行数据发送,适用于向 USB 设备发送配置命令、控制参数等场景,需选择 OUT方向端点(端点地址 direction=0),流程包括:解析用户输入的16进制数据、建立设备通信管道、声明目标接口、调用 usbManager.bulkTransfer() 发送数据。代码示例
// 发送数据到设备 private async sendDataToDevice(): Promise { if (this.selectedDeviceIndex === -1 || this.selectedInterfaceIndex === -1 || this.selectedEndpointIndex === -1) { this.log = '请先选择设备、接口和端点'; this.showSendDataDialog = false; return; } if (!this.sendDataContent.trim()) { this.log = '发送数据不能为空'; return; }
数据接收模块
USB 设备→主机进行数据发送,适用于从 USB 设备获取状态数据、采集数据等场景,需选择 IN 方向端点(端点地址 direction=0x80),流程包括:建立设备通信管道、声明目标接口、循环调用 usbManager.bulkTransfer() 读取数据、解析数据为十六进制格式并展示。代码示例:
// 开始接收数据 private async startReceiveData(): Promise { if ( this.selectedDeviceIndex === -1 || this.selectedInterfaceIndex === -1 || this.selectedEndpointIndex === -1) { this.log = '请先选择设备、接口和端点'; return ; }
更多代码示例,请关注深圳触觉智能电子发烧友
- 随机文章
- 热门文章
- 热评文章
- 知未智能开发多智能体KenSho,可分析产业链、预测商业影响
- 市政府代表团出访欧洲三国 推动多领域交流合作 共享发展新机遇 同谱合作新篇章
- 外媒:依靠民主党通过援外法案,美众议长或“付出代价”
- 和谐共生|解码“地球之肾”,中国湿地何以美出圈?
- 金价破位下行,贵金属市场蕴藏巨大机遇!技术分析师警示长期趋势变化
- 业务猛增4000%!黄金变现热潮持续 短期追涨需谨慎
- 航拍新疆|飞播水稻种 2小时200亩
- 钢市简评:假期来临,钢价不宜追涨杀跌投机操作
- 破罐子破摔?日本央行维持利率不变,美元兑日元暴涨再创逾30年新高
- 天齐锂业:境外少数股东收益暴增,SQM核心锂业务面临变动风险!
- 多元化布局!破局股权融资业务放缓,主流投行这样做……
- “插座”藏摄像头,男子非法销售窃照器材获刑
- 人民银行北京市分行:3月末北京制造业中长期贷款余额同比增长29.2%
- 1“赛事+”提升城市“流量” 陕西商洛拓经济发展新“赛道”
- 2“五一”临近 持基过节的投资者要注意这几点
- 3华发股份:成功入选“人民优选”品牌 五一黄金周热销30亿
- 4到2027年产业规模达到2000亿元 浙江发布历史经典产业高质量发展计划
- 5钟鼓楼老街区的古都新事
- 6IDC:24Q1全球PC出货量恢复增长 达到疫情前水平
- 7非常危险!女子摔成粉碎性骨折!又是因为洞洞鞋,夏天多人中招……
- 8金税四期试点上线,财税体制改革拉开帷幕!或有资金借道信创ETF基金(562030)逢跌进场布局
- 9初步数据:我国一季度经常账户顺差392亿美元
- 10“发现山西之美”TDC旅游发现者大会举办:共话文旅新生态 邀客体验新玩法
- 11国门“夫妻档” 国庆共坚守
- 12北交所一周审核动态:2家企业更新进展 胜业电气二轮问询回复中称家电头部客户对价格敏感度较低
- 13甘肃白银县域经济:从“一枝独秀”到“多点开花”
- 1小方制药两专利受让信披出错,产品挂网价申报出差池
- 2高考在即,如何拿出最好状态?这份“锦囊”请收好
- 3【央视快评】继续弘扬“爱国、革命”的黄埔精神 为同心共圆中国梦广泛凝心聚力
- 4EBC GROUP平台外汇行情播报|科技股疲态和过热情绪引起不安
- 5父母“上瘾”,凌晨3点都不睡!儿女一查账单惊呆了……
- 6我国最大海上公务执法船“海巡09”巡航惠州港
- 7星环科技:9月10日召开业绩说明会,投资者参与
- 8四川双江口水电站库周交通工程“8·18”较大坍塌事故调查报告公布
- 9红旗天工08正式上市 售价23.98万元起
- 10国证2000指数表现亮眼 景顺长城量化策略助力捕获超额收益
- 112025年华北地区联合招聘活动在京举办
- 12小摩:料宁德时代(03750)股价短期或回调 目标价400港元 维持“增持”评级
- 139月首周港股三大指数收涨 机构对后续持乐观态度,9月首周港股三大指数收涨 机构对后续持乐观态度



