OpenHarmony开发者论坛
标题:
wifiP2P应用开发案例
[打印本页]
作者:
深开鸿_张梦寒
时间:
4 天前
标题:
wifiP2P应用开发案例
[md]本文档主要讲解wifiP2P应用的开发流程和使用方法。
## 应用开发
本应用使用的DevEcoStudio构建版本是4.1.0.400,构建于 2024年4月9日,API版本是11。
1. 通过DevEcoStudio创建项目“File->New->Create Project”创建一个工程。
![image-20240918143321233.png](
https://forums-obs.openharmony.c ... 56nm2nm25fu5uzn.png
"image-20240918143321233.png")
2. 工程创建完毕后,在entry\src\main\ets创建wifiP2P相关目录,并且entry\build-profile.json5中配置worker。
```
ets
├─ workers
│ └─ Worker.ets
├─ pages
│ └─ Index.ets
└─ entryability
└─ EntryAbility.ets
```
3. 界面入口为Index.ets,此处也为wifiP2P测试页面。
![image-20241107104059577.png](
https://forums-obs.openharmony.c ... 7pxjti07ty7bg7y.png
"image-20241107104059577.png")
客户端界面可配置传输次数和数据长度,每次传输包含101个数据包,每个包中的元素范围从0至100。例如,第1个数据包中所有元素均为0,其长度依据应用设定。依此类推,客户端在每次回调中统计元素值为1至100的数据包数量和总长度,再通过发送首个元素值为199的包来标志传输结束。
服务端接收数据流程如下图所示。
![image-20241107163922918.png](
https://forums-obs.openharmony.c ... rixivz7pac7r62f.png
"image-20241107163922918.png")
$$
每次收包个数 = 每次回调中内存包含1到100累计回调次数(单位:个)
$$
$$
每次收包长度 = 每次回调中内存包含1到100累计数据长度(单位: 字节)
$$
$$
每次收包用时 = 每次收完元素100的时间 - 每次收完第一个元素0的时间(单位: ms)
$$
$$
每次传输速度 = 每次收包长度 * 1000 / (每次收包用时 *1024)(单位:KB/s)
$$
$$
平均速度 = 共收到字节 * 1000 / (总计时 * 1024)(单位:KB/s)
$$
**需要注意的是,*因为客户端在主线程发送数据会存在appfreeze的问题,所以需要让客户端在与主线程并行的worker线程中发送数据,具体可参考[@ohos.worker (启动一个Worker) (openharmony.cn)](
https://docs.openharmony.cn/page ... s/js-apis-worker.md
)*。**
## 应用使用
### 准备
- 两块dayu200开发板
- 在使用前确保两块开发板的**wifi是开启状态**
- 安装应用程序:hdc install xxx.hap
- 关于两块开发板所用镜像适配情况: 4.1.1Release(OpenHarmony 4.1.7.8)版本和5.0 Beta1(OpenHarmony 5.0.0.25)版本上应用可以正常运行,但在5.0.0Release(OpenHarmony 5.0.0.71)版本上服务端无法正常显示收到数据。
### 使用
1. 在两块开发板上安装此应用;
2. 一台开发板选择客户端,一台选服务端(点击顶部文字”蓝牙Socket测试“可变换背景颜色,颜色为白色时,不打印日志,为粉色时打印日志);
3. 服务端页面点击“测试服务端”按钮,客户端开发板进入设置-WLAN页面,待搜索到名为“ANOV”的wifi,使用密码“11223344”进行连接。
4. 客户端开发板连接成功后,打开应用进入客户端页面,选择测试次数和长度,再点击“测试客户端”按钮。
5. 客户端页面显示每次发包次数及包长,并在底部显示共测试次数、共发包个数和共发送长度,服务端页面会显示每次收包个数、包长、用时及速度,并在底部显示共测试次数、共收到字节、总计时以及平均速度。
6. 测试结果:本测试结果为在两种镜像下测试次数为100情况下的平均速度,具体结果如下:|
| | 4.1.1Release版本(OpenHarmony 4.1.7.8) | 5.0 Beta版本(OpenHarmony 5.0.0.25) |
| ---------------------------------------- | --------------------------------------- | ------------------------------------ |
| 包长为10字节时的平均速度(单位:KB/s) | 7 | 6 |
| 包长为1024字节时的平均速度(单位:KB/s) | 450 | 487 |
| 包长为4096字节时的平均速度(单位:KB/s) | 762 | 674 |
| 包长为10字节时的总收包个数(单位:个) | 1000 | 1000 |
| 包长为1024字节时的总收包个数(单位:个) | 9996 | 9988 |
| 包长为4096字节时的总收包个数(单位:个) | 9946 | 9976 |
从表格中可以看出,长度越大,传输速率越大,其原因可能是:每次回调使用的时间相差不大,但由于长度相差较多,长度间的差距远大于时间的差距,故包长越大,传输速率越大。需要注意的是,包长过长可能会导致数据发送失败。
### 常见问题及解决办法
常见问题:点击“测试服务端”按钮后,客户端开发板无法扫描到“ANOV”
可能原因:服务端开发板WLAN未打开
解决办法:进入设置-WLAN,打开WLAN状态,切掉wifiP2P应用后台并重新进入,再点击“测试服务端”按钮
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5