BT spp profile示例
源码路径:example/bt/spp
支持的平台
eh-lb52x
eh-lb56x
eh-lb58x
概述
本例程演示spp的连接和断开,数据传输,文件发送和速度测试,包含:
spp server
spp client
spp server and spp client
硬件需求
运行该例程前,需要准备:
一块本例程支持的开发板(支持的平台)。
一个安卓手机(spp只支持安卓手机使用,ios手机无法使用spp),需要下载一个spp蓝牙串口工具APP(例如:spp蓝牙串口、e调试等)。
例程的使用
例程开机会默认使能蓝牙,手机可以进入spp蓝牙串口工具APP进行搜索连接(以e调试app为例):
手机app连接开发板spp: 手机进入经典蓝牙设备搜索界面搜索开发板:
搜索到指定设备后,可以长按要连接的设备修改要连接的spp的uuid(默认是0x1101的UUID),本例程支持自定义spp的UUID来增加spp可连接数量,且和同一手机支持最多建立7条spp,用户可以通过实现bt_spp_srv_add_uuid_list接口来添加自定义UUID。同时,如果手机想要连接多条spp,可能需要分别在每一个app里进行一条spp连接。
可以在串口打印中看到连接成功的log:
手机往开发板发送数据 可以在手机app端往开发板发送数据,如下图所示:
在开发板的串口log中会打印出收到的数据大小和速度:
开发板往手机端发送数据 通过命令spp send_data + 地址 + service channel可以往手机发送一条测试数据,其中service channel可以通过在串口打印中获取:
在手机app中会显示收到的数据:
手机往开发板发送文件 在手机app里可以选择往开发板发送一个文件:
在开发板的串口log中会打印出收到的数据大小和速度,手机端也会显示发送进度:
开发板往手机发送文件 如果开发板里有文件则可以通过命令spp send_file + 地址 + service channel + 文件名往手机发送指定文件,其中service channel可以通过在串口打印中获取:
在手机端会显示收到的内容和数据大小:
开发板发起spp连接 开发板也可以发起spp的连接,但是由于很多手机只支持0x1101的spp,并且开发板主动连接上之后很快会被手机断开,所以可以选择开发板连接开发板的操作。 由于本例程支持自定义spp的UUID来增加spp可连接数量,可以分别在两个开发板上烧录此例程,这样就可以在开发板之间建立多条spp连接,其中一个充当手机的角色。 例如开发板A需要连接开发板B的0x3001的spp通道,则可以通过命令spp search + 地址 + uuid长度 + uuid先查询对端设备是否支持0x3001的spp:
开发板A可以通过命令spp connect + 地址 + uuid长度 + uuid去连接对端设备的0x3001的spp:
开发板和开发板间的through-put测试 上面提到的功能在开发板和开发板之间的连接也是存在的,这里主要讲解一下开发板之间的through-put测试。开发板A可以通过命令spp through_put + 地址 + service channel + 传输的数据大小,往开发板B传输指定大小的随机数据,开发板B在接收完所有的数据后会统计出速率大小: 其中service channel可以通过在串口打印中获取:
断开指定的spp连接 开发板可以通过命令spp disc + 地址 + service channel来断开指定的spp连接: 其中service channel可以通过在串口打印中获取:
断开所有连接的spp 开发板可以通过命令spp disc_all来断开所有的spp连接。
编译和烧录
切换到例程project目录,运行scons命令执行编译:
> scons --board=eh-lb525 -j32
切换到例程project/build_xx
目录,运行uart_download.bat
,按提示选择端口即可进行下载:
$ ./uart_download.bat
Uart Download
please input the serial port num:5
关于编译、下载的详细步骤,请参考快速入门的相关介绍。
例程的预期结果
例程启动后:
spp的功能正常
异常诊断
参考文档
更新记录
版本 |
日期 |
发布说明 |
---|---|---|
0.0.1 |
03/2025 |
初始版本 |