蓝牙 - BLE SPP实现举例 (Bluecode Protocol Stack)

这里以一个无线扫描枪设备为例,这个设备会通过蓝牙通讯协议连接一个底座,使用的是BLE SPP进行通讯。

扫描枪用来扫条码,解析出条码信息后,将数据通过无线传输给底座,底座再通过USB将数据传送给电脑。

底座是Central device,扫描枪是peripheral device,因为底座需要连接多个扫描枪。通常是扫描枪提供数据给底座,没数据可能会进入休眠状态。底座有USB供电,处于一直等待接收数据的状态。

也就是说扫描枪发布蓝牙广播信息,底座作为扫描方,接收蓝牙广播信息,发现扫描枪后,发起连接。

当底座连接多个扫描枪时,对Service的Characteristic进行读写操作,来实现串口通讯功能。一个通讯链路,需要一套用于数据通讯的Service和Characteristic。扫描枪和底座连接,这个Service和Characteristic实例放在扫描枪上。如果放在底座上,则会存在多个Service和Characteristic实例,会出现冲突,难以管理。故应由扫描枪来作为GATT Server,底座作为GATT Client。这里的Service和Characteristic指的是用于BLE SPP的,使用的是指定UUID,不同厂商(协议栈不同)使用的UUID可能是不同的。

本文使用的是Bluecode蓝牙协议栈,是和Telit公司提供的蓝牙模组一起使用的。参考的是此蓝牙扫描枪和蓝牙底座项目。

扫描枪的蓝牙操作

1,设置广播数据

在想连接的Target Device的地址发生变化时,才需要更新广播数据。

广播类型是非定向广播。

数据构造是小端顺序。

这里设置的数据分为广播数据及扫描响应数据,两个都是31字节。

  • 广播数据里是Flags,16bit Service UUID,Manufacturer Specific Data。在Manufacturer Specific Data的数据格式为:VendorID、TIO Data ID、Data Version、Bondable and functional mode、connection requested、Connect option、BT Address。默认情况下,Connect option值为0,表示连接的是Base,即底座。

  • 扫描响应数据里的数据是Complete local name。

扫描枪发布广播数据,底座想连接的话,收到广播数据,使用里面的地址,就可以连接扫描枪设备了。

Flags是0x06,16bit Service UUID是0xFEFB。Manufacturer Specific Data里,VendorID是0x008F。

2,注册相关服务。

在扫描枪这个产品中,注册了两个服务。一个DIS,Device Information service,160bit UUID是0x180A。

另一个就是BLE SPP service,即TIO profile了。

但具体的Service注册过程,在此项目中没有看到。需另外查询此协议栈的相关文档或SDK的demo。

底座的蓝牙操作

1,创建一个Periodic Scan Timer,作为GATT client设备,启动后就开始周期扫描,扫描方式是passive被动性扫描。

  • 参数设置:

scanInterval,128 tick (0.625ms one tick),80ms。

scanWindows,128 tick (0.625ms one tick),80ms。

开启Duplicate Filter。

  • 时序:

开始扫描,并启动一个300ms Timer;300ms Timer到了,停止扫描;Delay 300ms,等待协议栈线程的扫描结果处理;300ms时间到了,查询是否发现新设备;再等300ms;一个周期结束,重复上个周期操作,开始扫描。

大概就是900ms一个周期,有300ms的扫描时间。

2,收到并处理广播数据

进入被动扫描模式后,当接收到广播数据包,协议栈会发送事件,调用事件处理函数。

此处理函数是HandleBlueAPIMessage,处理的消息事件是blueAPI_EventLEScanInfo。

接受的数据就是31个字节,

要判断的条件有三个:

a, TIO Service UUID的值是否是0xFEFB,Telit Wireless Solutions (Formerly Stollmann E+V GmbH),在Assigned Numbers里能查到。

b, Vendor ID是否是0x008F(Telit Wireless Solutions GmbH),在Assigned Numbers里能查到。

c,Data ID是否是TIO ID,0xB009。

d,Connect option字节是否为0,表示请求连接。

然后将地址后面地址信息存储下来。

3,广播数据处理成功

在广播数据处理成功后,即得到了一个请求连接的蓝牙地址。在上面的Period Scan处理过程中,在查询是否发现新设备的处理中,使用得到的蓝牙设备地址请求一个GATT链接。

等待GATT链接请求的反馈结果,结果正确后,针对此蓝牙地址发送Discover Request,并等待反馈结果。

结果正确后,调用BLE SPP的请求连接的函数,反馈结果成功,则连接过程结束。

4,Discover过程

上面发送了Discover请求后,会收到协议栈反馈的Endpoint Indicate事件,里面包含了SPP的port信息。在BLE SPP请求连接时要使用这个信息,确定想连接的SPP port端口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/154675.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言KR圣经笔记 2.8自增和自减 2.9位运算 2.10赋值

2.8 自增和自减操作符 C提供了两个不同寻常的操作符,用于对变量进行自增和自减。自增操作符对操作数加上1,而自减操作符 -- 对操作数减去1。我们已经频繁使用 对变量进行自增,如: if (c \n)nl; 不寻常之处在于 和 -- 既能用作…

如何将 ONLYOFFICE 桌面版编辑器 7.5 安装到 Red Hat、CentOS 及衍生产品上

使用桌面版的 ONLYOFFICE 在线编辑器,您可使用本地文件操作,无需保持互联网连接状态。 ONLYOFFICE 桌面编辑器是什么 ONLYOFFICE 桌面编辑器是一款全面的办公工具,提供了文本文档、电子表格、演示文稿、可填写表单和 PDF 查看和编辑功能。它…

百度富文本上传图片后样式崩塌

🔥博客主页: 破浪前进 🔖系列专栏: Vue、React、PHP ❤️感谢大家点赞👍收藏⭐评论✍️ 问题描述:上传图片后,图片会变得很大,当点击的时候更是会顶开整个的容器的高跟宽 原因&#…

mac 安装homebrew ,golang

mac 安装homebrew ,golang 安装homebrew安装golang选择 apple arm 版本安装配置环境变量 安装homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"回车执行指令后,根据提示操作。具体包括以下提示操作&am…

CXL技术交流群问题讨论记录(1)

🔥点击查看精选 CXL 系列文章🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN,转载或引用请注明出处【https://mangopapa.blog.csdn.net/article/details/134131924】。…

Vue 的双向数据绑定是如何实现的?

目录 1. 响应式数据 2. v-model 指令 3. 实现原理 4. 总结 Vue.js 是一款流行的前端 JavaScript 框架,它以其强大的双向数据绑定能力而闻名。双向数据绑定使得数据在视图和模型之间保持同步,并且任一方的变化都会自动反映到另一方。那么,…

2016年亚太杯APMCM数学建模大赛B题化学元素对变形钢筋性能的影响求解全过程文档及程序

2016年亚太杯APMCM数学建模大赛 B题 化学元素对变形钢筋性能的影响 原题再现 热轧带肋钢筋通常被称为变形钢筋,它主要用于钢筋混凝土构件的骨架,在使用中需要一定的机械强度、弯曲和变形性能、制造焊接性。钢中的化学成分是影响热轧钢最终组织性能的基…

计算机毕业设计选题推荐-超市售货微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

reactos 可调试光盘映像

链接:https://pan.baidu.com/s/13M9BZN4IDrWLc3bjnHO79g?pwd0gst 提取码:0gst

双十一数码好物推荐,这几件入手绝对不吃灰

又到了一年一度的“双十一”购物狂欢季,大家是否已经找到心仪的物品呢?平时我们看中的某个商品,总是希望在最低价时购买,而毫无疑问,双十一是最佳的时机,毕竟各大电商平台都会推出丰富的优惠活动。为此&…

亚信科技发布“电信级”核心交易数据库AntDB7.0,助力政企“信”创未来!

昨日,亚信科技AntDB数据库 7.0产品线上发布会成功举办,数千位关注亚信科技、关注国产数据库,致力于推动数据库行业变革的专家、客户热情参与,并对发布会及产品给予高度评价。 新增两大技术特性 作为我国最早一批独立研发的通用型…

项目资源管理-考试重点

1. 冲突管理的5种方法 ① 撤退/回避 ② 缓和/包容 ③ 妥协/调解 ④ 强迫/命令 ⑤ 合作/解决问题 2. 虚拟团队的优缺点 优点: ① 能够利用不在同一地理区域的专家的专业技术 ② 将在家办公的员工纳入团队 ③ 以及将行动不便者或残疾人纳入团队 缺点&#…