这篇文章主要针对在实际工程中需要对特定从机进行主机开发从而实现数据通信,所以记录下来,主机工程基于DSPS的demo:DA14585_DSPS\projects\target_apps\dsps\dsps_host\Keil_5。
一、在从机工程中,通信只有一个服务,但是这一个服务包括两个特征(句柄),一个用于接收数据,一个用于发送数据如下:

SVC1_ADC_VAL_1_UUID_128用于从机发送数据给主机(FFF2),且已notify方式发送
SVC1_ADC_VAL_2_UUID_128用于主机发送数据给从机(FFF1),且以GATTC_WRITE方式发送
二、在通过上面第一步添加好特征UUID及句柄后,我们需要在spsc_sps_char_desc中定义针对特征的描述符,这里通过手机app查看从机服务的描述符1号有两个,2号有一个,对应2901和2902如下:


三、添加好特征属性后就是该如何使用这两个特征以便在主机进行扫描的时候与特定服务的从机进行检索对比。
1、在sps_client_enable_req_handler中,将首要服务添加进sps_data_service_uuid

2、将刚才添加的数据库spsc_sps_char_16添加进来:

3、在如下函数gattc_disc_char_desc_ind_handler将句柄总长度和数据库添加进来

4、sps_client_enable_cfm_send返回服务添加确认消息

返回状态status=ATT_ERR_NO_ERROR表示服务添加成功。
四、与从机的数据收发

该函数用于接收来自从机的消息。

至此,服务添加完毕,这个时候我们就可以通过调用这两个接口函数与从机进行数据通信了。

Note:
1、比较重要的函数是gattc_cmp_evt_handler,在该函数中,添加服务以及数据接收都是在该函数里完成。架构为:
if(state == SPS_CLIENT_DISCOVERING){}
else if (state == SPS_CLIENT_CONNECTED){}
2、添加流程:
->sps_client_enable_req_handler(将首要任务添加进去)
->gattc_disc_svc_ind_handler()
->gattc_cmp_evt_handler(主要的一个函数,发现服务的流程都在这里进行,参照Note1)
->prf_disc_char_all_send
->gattc_disc_char_ind_handler(通过调用prf_search_chars来将主机和从机的特征值数据库进行对比)
->prf_check_svc_char_validity_128(验证服务特征值有效性)
->prf_disc_char_desc_send
->gattc_disc_char_desc_ind_handler(通过调用prf_search_descs来将主机和从机的描述符数据库进行对比)
->prf_search_descs
->sps_client_enable_cfm_send(返回添加服务的结果是否成功)
3、向从机写数据时:需要通过以下函数将句柄写入,最后一个参数是写入方式


4、接收到来自从机的数据时:需要判断是哪个句柄发过来的。

5、值得注意的是,主从通信主要还是以UUID作为传输通道依据,所以在主从代码里,序号对不上很正常,关键看操作的序号对应的UUID是不是能对应上,这是最基本的操作。

基于DSPS的主机修改相关推荐

  1. 基于百度云主机的USDP 2.x 安装详细教程

    基于百度云主机的USDP 2.x 安装详细教程 1. USDP 简介 ​ UCloud Smart Data Platform(简称 USDP),是 UCloud 推出的云上智能化.轻量级的大数据基础 ...

  2. 基于京东云云主机搭建WordPress网站

    1 摘要 本文描述基于京东云云主机,搭建WordPress网站所需的MySQL数据库和Web应用,并在完成Plugin配置后发布一篇博文的全过程.本文将用到如下京东云资源: 云主机(m.n2.larg ...

  3. 基于QT的游戏修改器

    基于QT的游戏修改器 本项目是一个可以修改部分游戏的部分数据的.例如:修改自己做的贪吃蛇的得分. 1.h代码 #pragma once#include <QtWidgets/QMainWindo ...

  4. 关于emjoy表情在android5.x以上系统触发jni错误的修改(基于cocos2dx2.1.5修改)

    一直纠结着这个错误,后来看别人的文章找到灵感,于是完善了基于cocos2dx2.1.5修改的 具体报错:JNI DETECTED ERROR IN APPLICATION: input is not ...

  5. 主动信息搜集:基于ARP的主机发现

    主动信息搜集:基于ARP的主机发现 ​ ARP协议(地址解析协议)属于数据链路层的协议,主要负责根据网络层地址(IP)来获取数据链路层地址(MAC).以太网协议规定,同一局域网中的一台主机要和另一台主 ...

  6. godaddy停止支持php哪个版本,Godaddy主机修改PHP版本教程 | Godaddy美国主机中文指南...

    随着技术的不断发展,很多软件都会进行版本更新,网站程序也不例外,为了满足各种建站程序的需求,小编特发布本Godaddy如何修改PHP版本的教程. Linux主机修改PHP版本 1.在GoDaddy L ...

  7. nginx虚拟主机(基于域名虚拟主机、基于IP地址虚拟主机、基于端口虚拟主机设置)

    文章目录 Nginx支持的虚拟主机有三种 配置环境 配置DNS域名 安装环境 安装nginx 制作管理脚本 基于域名 基于端口 基于IP 基于用IP地址访问域名 Nginx支持的虚拟主机有三种 ●基于 ...

  8. 基于滴滴云主机搭建 FTP 文件共享服务器(一)

    FTP 简单介绍 什么是 FTP 服务器? FTP 服务器(File Transfer Protocol Server)是在互联网上提供文件共享存储和访问服务的计算机,它们依照 FTP 协议提供服务. ...

  9. 【很容易忽视的问题】为何使用护卫神iis-windows服务器,在使用护卫神主机修改网站信息后则无法访问的根本原因??

    本来是正常的网站,只要使用护卫神的主机大师修改一下,网站就提示错误:无法建立到 xxx.com 服务器的连接 不论基于哪个Lamp搭建环境[护卫神.phpstudy.宝塔Lamp]一旦你使用第三方软件 ...

最新文章

  1. maven打包记录1
  2. docker logs 查看docker容器日志
  3. LINUX 操作记录到syslog,并发送到syslog服务器上
  4. VMware上centos系统忘记账号和密码解决
  5. 居家洁士扫地机器人_掌握核心技术扫地机器人品牌推荐,由利和石头扫地机器人哪个牌子好?...
  6. 黑科技揭秘:百种异常随机注入,专有云为何稳如泰山 1
  7. (盒子模型常见问题)外边距合并问题,嵌套盒子边距塌陷问题解决
  8. pycharm背景图片的设置
  9. 罗技Setpoint控制酷狗等第三方播放器
  10. Node.js 教程第十四篇——Socket.io
  11. 测试了一下人脸识别,远远达不到吾之要求
  12. Android学习视频精品课程汇总(持续更新)
  13. 糗百文化:糗事百科的运营哲学
  14. 影视后期调色必要性以及操作理论
  15. 左与AOL合并 右牵手谷歌 雅虎对抗微软收购
  16. 本地数据库迁移至服务器数据库的教程
  17. Typora加上搜狗输入法快捷方法
  18. c语言输入输出预处理命令,C语言第十一讲,预处理命令.
  19. python的urllib.parse用法
  20. 看大族电机如何用机器人带领我们进入工业4.0时代|镁客网M-TECH AI助力中国智造产业论坛...

热门文章

  1. 零存整取--笔记整理(以简为主)
  2. Java网上心理咨询系统的设计与实现
  3. 利用计算机软件模拟光栅衍射实验,光栅衍射实验地MATLAB仿真(29页)-原创力文档...
  4. IDEA debug模式 Method breakpoints may dramatically slow down debugging 提示解决办法
  5. 从列表、字符串、元组或集合中随机抽取指定个元素 Python中random模块的sample()函数
  6. 【Android Demo】加载.gif格式图片
  7. 医学类职业适应性测试题用哪个软件,职业适应性测试题库 性格职业适应性测试.doc...
  8. github的webhooks简记
  9. vb.net 基于excel数据生成图表
  10. eclipse连天天模拟器