积分11 / 贡献0

提问1答案被采纳0文章1

作者动态

wifiP2P应用开发案例

深开鸿_张梦寒 显示全部楼层 发表于 昨天 17:11
本文档主要讲解wifiP2P应用的开发流程和使用方法。

## 应用开发

本应用使用的DevEcoStudio构建版本是4.1.0.400,构建于 2024年4月9日,API版本是11。

1. 通过DevEcoStudio创建项目“File->New->Create Project”创建一个工程。

   ![image-20240918143321233.png](https://forums-obs.openharmony.cn/forum/202411/08/170739u11umcyj1yyw184z.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.cn/forum/202411/08/170844oxk1ixhlpxbixolz.png "image-20241107104059577.png")

   客户端传送次数和长度可供选择,每次传输101个包,包中元素分别为0-100,如第一个包中元素皆为0,长度为应用界面规定长度,以此类推,客户端计算每次回调中元素为1-100的发包个数及长度,最后发送一首元素为199的数组表示发送完毕。

   服务端接收数据流程如下图所示。

   ![image-20241107163922918.png](https://forums-obs.openharmony.cn/forum/202411/08/170942g64n994lz10t8y6a.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/pages/v4.1/zh-cn/application-dev/reference/apis-arkts/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情况下的平均速度,具体结果如下:|

测试结果:本测试结果为在两种镜像下测试次数为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应用后台并重新进入,再点击“测试服务端”按钮

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部