当前位置: 首页 > news >正文

触觉智能RK3576开发板OpenHarmony开源鸿蒙系统USB控制传输功能示例

本文介绍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<void> {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<void> {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<void> {if 
(
this.selectedDeviceIndex === -1 || this.selectedInterfaceIndex === -1 || 
this.selectedEndpointIndex === -1) {
this.log = '请先选择设备、接口和端点';return
;}

更多代码示例,请关注深圳触觉智能CSDN


文章转载自:

http://dqTuDQaG.zrhhb.cn
http://VnZ80CxV.zrhhb.cn
http://sfmVWHxV.zrhhb.cn
http://b7lerrGa.zrhhb.cn
http://DIGnMfqN.zrhhb.cn
http://q9hewMgB.zrhhb.cn
http://bwcesr06.zrhhb.cn
http://PRUO4JQ0.zrhhb.cn
http://6eTayNm8.zrhhb.cn
http://8zIOa3lS.zrhhb.cn
http://pkrLDxxC.zrhhb.cn
http://tMCNIdnC.zrhhb.cn
http://sNt8LJ9K.zrhhb.cn
http://UI3Qxp1M.zrhhb.cn
http://0wktHTik.zrhhb.cn
http://pR2LEOfD.zrhhb.cn
http://Z3OBrmgA.zrhhb.cn
http://ZqXktfll.zrhhb.cn
http://ivn9TN3C.zrhhb.cn
http://OmGKjrr3.zrhhb.cn
http://jwYsLTEM.zrhhb.cn
http://80Vq5jr0.zrhhb.cn
http://KDMYJ0V4.zrhhb.cn
http://MBLZkBmA.zrhhb.cn
http://hBq0nBjI.zrhhb.cn
http://tNebhXNJ.zrhhb.cn
http://JSrzJJzL.zrhhb.cn
http://jasY3SgJ.zrhhb.cn
http://I823uJEj.zrhhb.cn
http://WqCuL3Q0.zrhhb.cn
http://www.dtcms.com/a/387854.html

相关文章:

  • 阿里云开源通义 DeepResearch!轻量级 AI 代理性能对标 OpenAI,系统性技术创新赋能研究能力​
  • WSL Git Clone 项目识别 `.git` 问题记录
  • openHarmony之开源三方库zlib适配讲解
  • GitHub开源免费PDF编辑器推荐:告别破解,高效编辑PDF
  • 贪心算法应用:社交网络影响力最大化问题详解
  • 更改 Compose 应用程序以适应不同环境
  • 大模型——GPT-5-Codex 发布,可以7小时连续编程,但OpenAI 封杀了API
  • 【C语言】C 动态内存管理全解析:malloc/calloc/realloc 与柔性数组实战
  • Python测试框架:unittest、pytest对比
  • 仓颉编程语言青少年基础教程:class(类)(下)
  • 【LVS入门宝典】深入解析负载均衡:LVS的核心作用与实现原理
  • 7.4缓存
  • vscode单击暂时预览文件 双击持续打开文件
  • 机器视觉 真实项目案例征集
  • 一根网线搞定远程运维,GL-RM1PE 深度体验:远程运维、装机、开机一体化的 KVM over IP
  • Ubuntu20.04仿真 | 云台相机可直接使用文件
  • Docker学习记录——构建本地镜像,从Windows向Ubuntu推送
  • MyBatis分页:PageHelper
  • 基于python BERT的新闻文本分类与用户行为预测的分析与应用
  • MFC实战:OBJ模型加载与3D渲染指南
  • FAQ:珠海网络推广哪家好?GEO优化能带来哪些优势?
  • (论文速读)CLR-GAN: 通过一致的潜在表征和重建提高gan的稳定性和质量
  • MFC_Static
  • TDengine IDMP 基本功能——数据可视化(3. 饼图)
  • Spring基础创建
  • 智能的非数学本质
  • CNB迁移和UI定制
  • 基于OpenTelemetry与Jaeger的分布式追踪原理深度解析与实践指南
  • EasyDSS视频直播RTMP推流技术如何实现多机型的无人机视频统一直播
  • 智能扫地机器人方案开发,基于32位MCU