BLE-NRF51822教程6-创建一个自己的服务
来源:互联网 发布:百度经纬度坐标数据库 编辑:程序博客网 时间:2024/06/05 09:20
首先打开 sdk 下的工程模板 在以下路径中
XXXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_template\pca10028\s110\arm5打开工程后,可以发现该模板的框架和一般工程例子基本是一样的。区别就是有一些函数内部并未实现,比如services_init() 。
Main 函数的整体初始化流程都是通用。
这一讲我们来在该模板上创建个使用最少资源的服务。
我们只是创建一个服务这个服务具有可写和通知的特性。从而实现手机发数 这个服务具有可写和通知的特性。从而实现手机发数 据给设备,然后对数做 加 1操作 后再返回给手机。所以我们没有使用:定时器、按键定时器、按键led、绑定功能、链接参数、更新操作、所以上面的main函数我们精简成如下:
这个时候编译工程下载到板子后是可以搜索设备的。只是连接后并没有服务,下面我们来创建一个服务。 要实现的就是上面services_init() 函数。首先我们需要定义一个自己的服务结构体来记录这相关些信息。直接在 main.c 文件的上面定义如下结构体。
然后定义一个全局变量
BlkMyService my_service; // 这个全局变量保存了我们的服务相关信息
然后实现 service_init() 函数。
这里不使用模板工程中 建议的初始化方法,为简单起见我 们就直接在该函数里面调用服务添加和特征值。
为方便也是直接就在 main.c 文件中实现如下函数
到这里服务以及其中的特征值都已经创建好了。编译工程下载后,手机连接设备可以看到服务列表中已经有了我们添加的服务uuid 为0x1234,点击服务也可以看到其中的特征值 uuid 为0x5678;服务创建完后就是与手机通信了。我们要实现的是手机发送一个数据,设备收到后对数据做加 1 操作后再发回给手机。
手机发给设备的数据最终会被打包成一个写事件结构然后交给 app 。
先实现对写事件的处理。就是将数据加一然后在发送回给手机。
当然发送数据给手机之前,我们要知道之前,我们要知道 conn_handle,这在手机连接的时候 app 会收到这个事件,记录下句柄就可以了。
最后我们将这个 服务事件处理函数 添加到事件派发函数中
编译工程下载后 ,手机连接上进入服务的特征值勾选使能 notify 功能, 然后发送数据就可以看到收加 1 的数据了
XXXX\Keil_v5\ARM\Pack\NordicSemiconductor\nRF_Examples\9.0.0\ble_peripheral\ble_app_template\pca10028\s110\arm5打开工程后,可以发现该模板的框架和一般工程例子基本是一样的。区别就是有一些函数内部并未实现,比如services_init() 。
Main 函数的整体初始化流程都是通用。
这一讲我们来在该模板上创建个使用最少资源的服务。
我们只是创建一个服务这个服务具有可写和通知的特性。从而实现手机发数 这个服务具有可写和通知的特性。从而实现手机发数 据给设备,然后对数做 加 1操作 后再返回给手机。所以我们没有使用:定时器、按键定时器、按键led、绑定功能、链接参数、更新操作、所以上面的main函数我们精简成如下:
这个时候编译工程下载到板子后是可以搜索设备的。只是连接后并没有服务,下面我们来创建一个服务。 要实现的就是上面services_init() 函数。首先我们需要定义一个自己的服务结构体来记录这相关些信息。直接在 main.c 文件的上面定义如下结构体。
然后定义一个全局变量
BlkMyService my_service; // 这个全局变量保存了我们的服务相关信息
然后实现 service_init() 函数。
这里不使用模板工程中 建议的初始化方法,为简单起见我 们就直接在该函数里面调用服务添加和特征值。
为方便也是直接就在 main.c 文件中实现如下函数
到这里服务以及其中的特征值都已经创建好了。编译工程下载后,手机连接设备可以看到服务列表中已经有了我们添加的服务uuid 为0x1234,点击服务也可以看到其中的特征值 uuid 为0x5678;服务创建完后就是与手机通信了。我们要实现的是手机发送一个数据,设备收到后对数据做加 1 操作后再发回给手机。
手机发给设备的数据最终会被打包成一个写事件结构然后交给 app 。
先实现对写事件的处理。就是将数据加一然后在发送回给手机。
当然发送数据给手机之前,我们要知道之前,我们要知道 conn_handle,这在手机连接的时候 app 会收到这个事件,记录下句柄就可以了。
我们针对写事件实 我们实现如下的数据操作和发送函(为方便都是直接在 main.c 文件中实现 )
最后我们将这个 服务事件处理函数 添加到事件派发函数中
编译工程下载后 ,手机连接上进入服务的特征值勾选使能 notify 功能, 然后发送数据就可以看到收加 1 的数据了
阅读全文
0 0
- BLE-NRF51822教程6-创建一个自己的服务
- BLE-NRF51822教程6-创建一个自己的服务
- BLE-NRF51822教程6-创建一个自己的服务
- BLE-NRF51822教程6-创建一个自己的服务
- BLE-NRF51822教程6-创建一个自己的服务
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之一
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之二
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之三
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之四
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之一
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之二
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之三
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之四
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之五
- BLE-NRF51822教程4-串口BLE解析
- BLE-NRF51822教程4-串口BLE解析
- BLE-NRF51822教程4-串口BLE解析
- BLE-NRF51822教程4-串口BLE解析
- HDU2067(52/600)
- 生成任意位数的磁力数
- 【板子】树链剖分
- 遍历数组或字典的方法
- Ribbon脱离eureka使用
- BLE-NRF51822教程6-创建一个自己的服务
- (sgu-344)Weed
- Android Studio2.3正式版带SDK安装教程 亲测有效!
- linux输入输出重定向详解
- Zend Studio使用教程:使用jQuery支持进行开发(一)
- Shortest path in a Maze | Lee algorithm
- hdu 5025
- hadoop中的DistCp和FastCopy
- Android App 瘦身总结 第三章 代码混淆及优化