OpenHarmony开发者论坛
标题:
关于OpenHarmony如何通过原生APP(HAP)+第三方so(Libusb)访问硬件设备的问题
[打印本页]
作者:
lxwinter
时间:
2024-2-28 16:09
标题:
关于OpenHarmony如何通过原生APP(HAP)+第三方so(Libusb)访问硬件设备的问题
各位大佬:
请教一个问题,当前情况如下:
一、操作步骤
1、自己成功编译迁移了libusb.so,到OpenHarmony下
2、基于libusb库,编写了一个纯C/C++的可执行文件,调用libusb访问一个外接的USB小模块。
注:使用的CMakelist编译Execuable。然后把可执行文件和libusb.so,通过hdc(类adb)送到OH系统上
3、编译完的两个库,发送后,赋予可执行文件777权限,然后执行,hdc指令参考:
hdc file send XxxTest /data/local/XxxTest
hdc file send libusb1.0.so /data/local/libusb.so
hdc shell "chmod 777 /data/local/*"
hdc shell
cd /data/local/
./XxxTest
4、通过以上操作,在OpenHarmony3.1/4.0上,可以正常通过C/C++编写的可执行文件,调用libusb.so,可以正常调用到外接的USB小模块,并正常驱动起来。
二、原生APP通过NAPI调用libusb访问硬件设备问题
基于以上访问验证通了以后,我需要编写一个原生APP(OH的HAP)去调用这个libusb访问设备。
1、使用DevEco Studio,编写了一个DEMO,选择Native C++,然后就是基于NAPI的代码。
2、加载起libusb,配置好CMakelist。以及把前面编写的C/C++可执行程序代码,移到NAPI里,对外导出对应接口
3、在ArkTs层,通过NAPI导出的接口,调用到libusb去访问设备
结果:访问不到,报错,libusb初始化就失败了,libusb找不到USB设备列表。
4、尝试各种方法:给与APP各种访问权限、ArkTs申请文件访问权限、ArkTS申请USB权限、把libusb放到/system/lib并给644/777权限等
都没用,通过NAPI记录的日志显示,调用libusb的init失败,other_error。实际就是libusb遍历usb设备节点都没找到
这样做的原因:需要跨平台Linux/Android,保持同一套代码。
1、请教各位大佬:以上问题,有哪位清楚,有什么方案解决?
2、官方第三方库迁移列表里,有libusb,说是迁移成功。如果迁移的libusb都没法通过HAP原生APP调用,无法访问到USB设备,那官方迁移libusb的意义是?
官方迁移第三方库的地址:
https://gitee.com/openharmony-sig/tpc_c_cplusplus
作者:
论坛小助手
时间:
2024-3-1 17:13
您好,您发布的内容更适合在【问答】板块发布,建议您更改发布渠道
【文章】板块主要是技术和开发经验分享,【问答】板块有更多的技术专家帮您答疑解惑
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5