相关资料:
1.communication_dsoftbus: 暂无描述 - Gitee.com
2.dsoftbus_tool: OpenHarmony 分布式软总线样例
编译该demo之前需要大家搭建拉取openharmony源码,搭建开发环境,同时全量编译成功,还需要安装hdc工具,具体可以看这几篇文章openharmony—release—4.1开源鸿蒙源码编译踩坑记录_[ohos error] code: 4000 [ohos error] [ohos error] -CSDN博客
openharmony—release—4.1开发环境搭建(踩坑记录)_openharmony环境搭建-CSDN博客
我们将仓库,拉取下来
dsoftbus_tool: OpenHarmony 分布式软总线样例
目录如下
softbus_tool目录如下
1.复制文件夹
我们将softbus_tool文件夹放入 openharmony源码目录/foundation/communication/dsoftbus/tests/
2.编辑GN
打开OpenHarmony/foundation/communication/dsoftbus/core/BUILD.gn
增加
"../tests/softbus_tool:softbus_tool"
3.编译
进入openharmony目录,使用如下命令编译
sudo ./build.sh --product-name rk3568 --ccache --build-target dsoftbus
3.1 解决编译报错
报错
原因为在hilog在4.1中的需要增加依赖才可以使用
重新编译
3.2 编译成功
编译结果在 鸿蒙源码/out/rk3568/communication/dsoftbus/softbus_tool
3.3 清理之前编译结果
sudo rm -rf ./out/rk3568
3.4 编译64位版本
sudo ./build.sh --product-name rk3568 --target-cpu arm64 --ccache --build-target dsoftbus
编译失败,因为当前系统不支持64位
3.5 加快编译的命令
第一次编译完成之后,我们可以直接使用之前的GN,不需要每次都重新构建,所以可以直接使用如下命令
sudo ./build.sh --product-name rk3568 --ccache --build-target dsoftbus --fast-rebuild
4.将编译后的结果放置到开发板上
这里我们需要先将文件挪到window上,然后使用hdc工具将文件发送到开发板上
相关资料:
OpenHarmony 开源鸿蒙北向开发——hdc工具安装_鸿蒙hdc下载-CSDN博客
OpenHarmony 开源鸿蒙北向开发——hdc工具使用及常用命令(持续更新)-CSDN博客
我这里是在鸿蒙系统下./data/创建了test目录,然后使用hdc工具传输到该目录,同时我直接在softbus_tool目录下打开的cmd,所以直接使用如下命令将文件传送至开发板
hdc file send softbus_tool ./data/test
然后我们使用hdc工具进入openharmony的shell,
hdc shell
之后进入鸿蒙后台可以看见该文件,
然后我们需要修改权限,使用如下命令
chmod 777 ./data/test/softbus_tool
5.运行
我这里直接在hdc工具的shell下运行该文件,运行成功
5.1 运行报错
但是依照softbus_tool仓库的README运行时,产生报错
而我使用使用串口后台运行是这样提示的
5.2 查看日志
我们这边先运行工具,但是不输入命令
然后打开另一个hdc shell
使用如下命令,查看所有进程
ps -ef | grep "softbus"
找到softbus tol的进程PID,即2269
使用hilog查看该pid日志
hilog -P 2235
同时在原先的shell下输入命令操作softbus_tool工具,日志如下
仍旧报错
而在hilog这边
查了下资料发现softbus tool仓库的README是基于openharmony3.1编写的,与openharmony4.1不同。
相关资料: communication_dsoftbus: 暂无描述 - Gitee.com
我们应该使用如下几个命令
******Softbus Tool Command List****** *
04 - JoinLNN * *
05 - LeaveLNN * *
08 - PublishLNN * *
09 - StopPublishLNN * *
10 - RefreshLNN * *
11 - StopRefreshLNN * *
20 - SendMessage * *
21 - SendBytes * *
22 - SendStream * *
23 - SendFile * *
************************************
5.3 运行报错
尝试发现,无法进入回调函数,且卡死,将源码中的信号量部分注释掉,发现不再卡死
5.3 运行报错
尝试发现,无法进入回调函数,将源码中的信号量部分注释掉,发现可以了
重新编译,发现运行可以了,这里我复制了一份softbus tool作为softbus test,编译后在开发板上运行
发现可以了
5.4 解决问题
重新编译,发现运行可以了。
这里为了方便操作,我写了一个自己的版本softbus_test,同样的步骤运行后在开发板上运行成功
于是开始解决回调函数的问题,
测试发现pub,回调函数的确进不来,也没有报错,奇奇怪怪,但是使用wireshark发现,是有报文向外发送的
于是先不抓这些,先测试一下所有功能。
5.5 错误码表
这边为了知道错误码到底是啥,于是写了一个函数,将鸿蒙源码/foundation/communication/dsoftbus/interfaces/kits/common/softbus_error_code.h中的SoftBusErrNo枚举对应的16进制值都打印了出来,字数太多,我放在另一个文章中,我这边是适配openharmony 4.1 release版本的,仅限于参考
Openharmony4.1 Release——软总线部分错误码表-CSDN博客
6.测试
6.1 发布服务
报错如上,这里不赘述了
6.2 扫描服务
成功扫描到设备
6.3 组网
报错
查了一下这个报错是认证失败,也许是我这边没有两个一样的设备进行绑定的原因,尝试解决。
6.3.1 解决pkgName的问题
阅读仓库我们可以发现,很多函数中都有一个pkgName参数
,测试后发现,该参数不能够重复,即该参数不能注册使用多个服务,比如说已经在发布服务中使用了,就不能在扫描服务中再给该参数使用同样的值了。
所以我这边在加入服务中,创建了一个新的值
此时才进入下一阶段。