ShareKit:基于OpenHarmony的蓝牙与WIFI分享测试工具项目

用户可通过该项目测试蓝牙连接、通信、广播、扫描及WIFI组创建、连接等功能,包含蓝牙客户端/广播/扫描demo和WIFI demo,支持文件发送,提供完整编译及使用流程。【此简介由AI生成】

分支5Tags1
文件最后提交记录最后更新时间
5 个月前
4 个月前
4 个月前
1 个月前
4 个月前
1 个月前
4 个月前
7 个月前
7 个月前
4 个月前
6 个月前
6 个月前
6 个月前
6 个月前
4 个月前
4 个月前
4 个月前
8 个月前
5 个月前
6 个月前
4 个月前
4 个月前
4 个月前
7 个月前
6 个月前
7 个月前

ShareKit蓝牙分享测试程序使用教程

一、编译步骤

1 x86平台编译环境:Ubuntu24.04.3 LTS 安装编译依赖

sudo apt install build-essential
sudo apt install libexpat1-dev
sudo apt install -y pkg-config build-essential autoconf automake libtool
sudo apt install -y gettext
sudo apt install python3-dev python3-setuptools
sudo apt install python3-docutils
sudo apt install -y flex bison
sudo apt install -y libnl-3-dev libnl-genl-3-dev libnl-route-3-dev

开始编译

cd ShareKit
sudo ./build_thirdpart_x86.sh 
X86平台蓝牙编译:
sudo make -f ./Makefile_bleadapter_x86 bleadapter
编译产物
ShareKit/build/libbleadapter.so
X86平台WIFI编译:
sudo make -f ./Makefile_wifiadapter_x86 wifiadapter
编译产物
ShareKit/build/libwifiadapter.so
  1. arm平台编译环境:Ubuntu20.04.6 LTS 安装编译依赖
sudo apt install build-essential
sudo apt install libexpat1-dev
sudo apt install -y pkg-config build-essential autoconf automake libtool
sudo apt install -y gettext
sudo apt install python3-dev python3-setuptools
sudo apt install python3-docutils
sudo apt install -y flex bison
sudo apt install -y libnl-3-dev libnl-genl-3-dev libnl-route-3-dev

开始编译

cd ShareKit
sudo ./build_thirdpart.sh
arm平台蓝牙编译:
sudo make -f ./Makefile_bleadapter bleadapter
编译产物
build/libbleadapter.so
arm平台WIFI编译:
sudo make -f ./Makefile_wifiadapter wifiadapter
编译产物
build/libwifiadapter.so

二、蓝牙demo使用

1. 蓝牙客户端demo使用

1. Makefile使用

使用Makefile_ble_client,命令如下:
sudo make -f Makefile_ble_client all
sudo make -f Makefile_ble_client clean

2. demo使用

蓝牙客户端demo是demo/demo_ble_client.c文件,用于测试蓝牙连接和通信功能
注:libbleadapter.so是蓝牙客户端程序,ShareKit_TX_Demo是蓝牙demo

  1. 搜索蓝牙地址
    命令:bluetoothctl
    测试手机打开蓝牙并开始广播,在电脑上找到测试手机地址
  2. 增加权限
    命令:chmod u+x libbleadapter.so ShareKit_TX_Demo
    给demo增加运行权限
  3. 放置文件
    命令:sudo cp libbleadapter.so /usr/lib
    规定动态库放入此路径
  4. 运行demo
    命令:sudo ./ShareKit_TX_Demo 50:01:E0:62:94:6C 500
    假设蓝牙地址为 50:01:E0:62:94:6C,mtu大小为 500

3. demo连接成功日志示例

  1. 搜索:CreateGattConnection 连接成功!
    解释:表示蓝牙连接成功
  2. 搜索:发现服务:
    解释:搜索此关键词,可以找到所有主服务
  3. 搜索:start send Notification
    解释:发送notify
  4. 搜索:notification response data:
    解释:对方回复的数据,表示notify是成功的

2. 蓝牙广播demo使用

1. Makefile使用

使用ShareKit_ble_adv_Demo,命令如下:
sudo make -f ShareKit_ble_adv all
sudo make -f ShareKit_ble_adv clean

2. demo使用

蓝牙广播端demo是demo/demo_ble_discovery.c文件,用于测试蓝牙广播
注:libbleadapter.so是蓝牙广播端程序,ShareKit_ble_adv_Demo是蓝牙广播demo

  1. 增加权限
    命令:chmod u+x libbleadapter.so ShareKit_ble_adv_Demo
    给demo增加运行权限
  2. 运行蓝牙广播demo
    sudo ./ShareKit_ble_adv_Demo
  3. 注册广播回调 开启广播
    先输入 11 显示‘>> SoftbusBleDiscoveryRegisterBroadcaster g_advId:0 ret:0’ 表示注册成功
    再输入 13 显示‘>> SoftbusBleDiscoveryStartBroadcasting g_advId:0 ret:0’ 表示开启广播成功

3. 蓝牙扫描demo使用

1. Makefile使用

使用ShareKit_ble_scan_Demo,命令如下:
sudo make -f ShareKit_ble_scan all
sudo make -f ShareKit_ble_scan clean

2. demo使用

蓝牙扫描端demo是demo/demo_ble_discovery_scan.c文件,用于测试蓝牙扫描
注:libbleadapter.so是蓝牙扫描端程序,ShareKit_ble_scan_Demo是蓝牙扫描demo

  1. 增加权限
    命令:chmod u+x libbleadapter.so ShareKit_ble_scan_Demo
    给demo增加运行权限
  2. 运行蓝牙扫描demo
    sudo ./ShareKit_ble_scan_Demo
  3. 注册广播回调 开启广播
    输入 1 :初始化 输入 2 :注册扫描监听器 输入 3 :开始扫描 扫描开启成功,会有扫描开启成功的日志打印 此时会有扫描的数据上报,如果有BLE蓝牙助手,开启外围模式,会有"Complete Device Name: honor300"类似于这样的日志打印 输入 4 :停止扫描 输入 5 :注销广播监听器 输入 6 :注销扫描监听器 输入 0 :退出程序

三、SharKit WIFI demo测试程序使用教程

编译生成可执行文件

sudo make clean
sudo make all
cp build/wifi_demo .

1、程序启动流程

  • 程序启动 eg:sudo ./wifi_demo DIRECT-aF-8xAAABBVEFTLUFOMDA 42:cb:a3:89:20:b7 12345678 5805
  • sudo ./wifi_demo ssid MAC PASSWORD FREQUENCY
  • 可执行程序后面的参数为MAGICLIN的连接参数测试,为本机作为GC,
  • 若只测试GO端功能,可以简化为sudo ./wifi_demo 1 1 1 5805

1.初始化菜单

1. wifi go test
2. wifi gc test
3. printf GroupInfo
4. GO Destroy Group
5. GC exit Group
6. Get Station Frequency
7. Get Mac Address
8. Request Gc Ip
9. config IP addr
0. exit.
***If you don't press '0'to exit, you need to restart the WPA service***
Execution order:1--3--6--7--8--9--4 or 2--3--6--7--8--9--5

2、详细操作步骤

步骤1:Go测试

选择:1
  • 作用:创建一个组
  • 输出示例:P2P-GROUP-STARTED p2p-wlan0-1 GO ssid="DIRECT-PH" freq=5805 passphrase="qrB1JPvT" go_dev_addr=8a:a2:9e:37:73:4d!
  • 此wpa信息中,p2p-wlan0-1是组名,GO是组创建者,ssid是组名,freq是组频率,passphrase是组密码,go_dev_addr是组创建者的MAC地址(此地址不能用来进行MAGICLINK连接)。

步骤2:显示组信息

选择:3
  • 作用:显示组的信息
  • 输出示例:
GroupInfo.isP2pGroupOwner:    1
GroupInfo.passphrase:         qrB1JPvT
GroupInfo.interface:          p2p-wlan0-1
GroupInfo.groupName:          DIRECT-PH
GroupInfo.networkId:          0
GroupInfo.frequency:          5805
GroupInfo.isP2pPersistent:    0
GroupInfo.groupStatus:        2

步骤3:销毁组

选择:4
  • 作用:由于无法创建多个组,所以在退出时需要销毁所创建的组,以防下次操作时出现错误。

步骤4:连接到组

此时需要使用手机wifi连接到组,wifi名称为ssid,密码为qrB1JPvT。
或
使用另一台设备运行此程序,按照./wifi_demo ssid MAC PASSWORD FREQUENCY进行输入。注意:此时的MAC地址为在GO程序选择7得到的结果,或者使用ifconfig所看到的MAC地址。其他均为组信息中的信息。
  • 连接到组以后GO端会收到AP-STA-CONNECTED事件。
  • 若是手机连接,需要打开手机开发者模式,并打开WLAN详细日志,这样才能看到手机的IP地址。
  • 若是另一台设备连接,则需要手动分配IP地址。(推荐使用此方式连接)

步骤5:分配IP地址

选择8,然后选择9
  • 作用:为GO测分配IP地址
  • 可以另开一个终端上使用ifconfig查看IP地址

步骤6:ping命令

若是手机,打开开发者和WLAN详细日志,就可以在wifi中看到IP地址,在GO端ping此IP地址
若是用另一台设备,静态分派IP地址后,在GO端试ping此IP地址
  • 作用:若能ping通,则说明连接成功

3、完整使用示例

  • 重启wpa服务
#!/bin/bash
sudo killall wpa_supplicant 2>/dev/null
sleep 1
sudo rm -f /var/run/wpa_supplicant/wlan0
sudo rm -f /var/run/wpa_supplicant/p2p-dev-wlan0

sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/p2p.conf -D nl80211
  • 运行程序
# 1. 启动程序
sudo ./wifi_demo ssid MAC PASSWORD FREQUENCY
# 2. 创建组
输入:1
# 3. 显示组信息
输入:3
# 4. 连接到组
手机或另一台设备
# 5. 分配IP地址
输入:8&9
# 6. ping测试

4、注意事项

1.可以按照1--3--6--7--8--9--4这个顺序进行操作。
2.必须使用0退出,否则必须重启wpa服务。
3.若使用另一台设备连接,请手动分配IP地址。

四、程序启动流程

1. 初始菜单显示

初始化设备资源 InitShareKit 
释放设备资源 UnInitShareKit 
开始Share服务 StartShareService 
停止Share服务 StopShareService 
开始BLE发现设备 StartSearchDev 
停止BLE发现设备 StopSearchDev 
开始发送文件 StartSendFile 
取消发送文件 CancelSendFile 
退出
请选择操作 (0-7):

五、详细操作步骤

步骤1:开始设备发现

选择:5
  • 作用:启动蓝牙BLE扫描,搜索周围的设备
  • 输出示例:StartSearchDev ret:0
  • 扫描到的设备会输出展示

步骤2:选择发送文件

选择:7
- 会发送当前目录下的123.png文件到对端

步骤3:退出程序

选择:0

六、完整使用示例

# 1. 启动程序
sudo hciconfig hci0 down
sudo hciconfig hci0 up
./start.sh

# 2. 开始搜索设备
输入:5
# 等待发现设备...

# 3. 发送文件
输入:7
发送当前目录下的123.png文件到对端

# 4. 退出
输入:0

七、注意事项

  1. 操作顺序很重要:必须按顺序初始化→搜索→发送
  2. 资源释放:使用完后务必释放资源
  3. 多线程安全:回调函数可能在后台线程调用
  4. 文件大小:注意大文件传输可能需要较长时间

八、厂商差异修改

wifi相关修改:
   1. ReadConfig函数修改
      const char *filename 需要给其赋值为实际的conf文件路径(此conf文件为启动wpa服务的文件)
      eg:启动wpa的命令为wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/p2p.conf -D nl80211
          则设置为const char *filename = "/etc/wpa_supplicant/p2p.conf";
          同时需要修改p2p.conf(可能实际的文件名称不为p2p.conf,以实际为准)
            在此文件中加入#interface字段
            ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
            #interface=wlan0
            此字段以实际为准(如有wlan0、wlp0s20f3..),任意位置即可。

   2. 以下宏需要厂商确定是否适合设备。
   #define WIFI_CTRL_INTERFACE_PATH    "/var/run/wpa_supplicant"
   #define WIFI_CTRL_IFACE_PATH        "/var/run/wpa_supplicant/wlp0s20f3"
   #define WIFI_IF_NAME_DEFAULT        "wlp0s20f3"

   eg:例如设备中socket路径与上述不符,为/tmp/wpa_supplicant/wlan0,则需要改为如下
         #define WIFI_CTRL_INTERFACE_PATH    "/tmp/wpa_supplicant"
         #define WIFI_CTRL_IFACE_PATH        "/tmp/wpa_supplicant/wlan0"
         #define WIFI_IF_NAME_DEFAULT        "wlan0"

项目介绍

用户可通过该项目测试蓝牙连接、通信、广播、扫描及WIFI组创建、连接等功能,包含蓝牙客户端/广播/扫描demo和WIFI demo,支持文件发送,提供完整编译及使用流程。【此简介由AI生成】

定制我的领域