#物联网征文# 【系统服务】- OpenHarmony 串口服务访问 原创 精华
中软小助手
发布于 2022-8-15 10:07
浏览
9收藏
作者:邱云
项目介绍
本文档是在eTS项目hap包中实现串口访问的使用说明,通过JS接口开放给上层应用使用。
一、开发环境准备
安装OpenHarmony SDK
1. 在DevEco Studio菜单栏选择Tools->SDK Manager
2. OpenHarmony SDK选项中选择配备API版本进行安装
二、创建eTS项目
创建支持Native C++的eTS项目
三、NAPI库相关
生成串口NAPI库
1. 添加文件src/main/cpp/types/libserialhelper/serialhelper.d.ts
2. 添加文件src/main/cpp/types/libserialhelper/package.json
3. 根据serialhelper.d.ts文件生成对应的c++源码
方式一:手动编写src/main/cpp/serial_helper.cpp
方式二:使用NAPI框架生成工具生成 工具链接
1)将serialhelper.d.ts、basic.d.ts复制到同一目录中,创建out目录
2)执行./napi_generator-linux -f serialhelper.d.ts -o out
3)将生成的源码文件复制到src/main/cpp
4. make文件:src/main/cpp/CMakeList.txt
5. 添加项目依赖
entry/package.json
entry/package-lock.json
6. 编译生成
修改编译项entry/build-profile.json5:
四、实现串口异步回调
添加串口IPC客户端libserialport_service_api.z.so库,并且实现具体的异步回调功能
-
将libserialport_service_api.z.so复制到entry/libs/armeabi-a7v目录
-
将库的头文件复制到entry/src/main/cpp/include目录
-
继承SerialCallbackBase类,实现串口数据异步回调SerialAsyncCallback
-
修改src/main/cpp/CMakeList.txt文件
-
在napi函数中调用api函数,使用NAPI框架生成工具生成OpenSerial代码,如下:
-
模块注册
-
eTS调用接口验证
应用启动后点击"打开/dev/ttyXRUSB0"按钮查看输出日志,出现serialport_client与serial_service_impl标志,表示访问串口服务成功
项目完整源码地址
更多原创内容请关注:中软国际 HarmonyOS 技术团队
入门到精通、技巧到案例,系统化分享HarmonyOS开发技术,欢迎投稿和订阅,让我们一起携手前行共建鸿蒙生态。
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2022-8-15 10:52:18修改
赞
14
收藏 9
回复
14
11
9
相关推荐
学到了
看到文中有生成对应的c++源码的操作,也就是说对使用者C++也有一定的要求了?
满满的干货,这样就可以使用hap包了
是的,使用者要了解c++
感觉ets在OpenHarmony会全面取代JS
更新后很多地方都要用ets了
厉害厉害,学习了
在 window10 的 DevEco Studio 3.1 Beta 中编译大佬的工程代码,报错:
unable to find library -lserialport_service_api.z
请大佬指导下如何解决,多谢
问下,libserialport_service_api.z.so 这个包在哪里?
[InitEnhanceHandler]:init enhance lib /system/lib/libsec_comp_client_enhance.z.so failed, error Error loading shared library /system/lib/libsec_comp_client_enhance.z.so: No such file or directory
在引入 libserialport_service_api.z.so 的时候报错
[(native_module_manager.cpp:676)(LoadModuleLibrary)] dlopen failed: Error relocating /data/storage/el1/bundle/libs/arm/libserialport_service_api.z.so: _ZN4OHOS18BrokerRegistration8RegisterERKNSt3__h12basic_stringIDsNS1_11char_traitsIDsEENS1_9allocatorIDsEEEERKNS1_8functionIFNS_4sptrINS_13IRemoteBrokerEEERKNSB_INS_13IRemoteObjectEEEEEE: symbol not found
DevEco Studio 3.1.1 Release,API9
是不是这个so文件有新版本解决了这个问题?