你也你又不是第一天认识我了,这个就为我量身定做的什么意思


  Beacon系列的前两篇文章中我已经介绍了Beacon应用开发的概念和AltBeacon广播形式并详细讲解了如何利用AltBeacon安卓API开发博物馆导览APP原型。在今天的最终篇里我将向大家介绍如何测试这一博物馆导览APP。

选择蓝牙开发板启动你的!  我们暂时还没有现成采用AltBeacon形式的Beacon,但手上有不少蓝牙开发板蓝牙开发板是具有智能蓝牙功能的微控制器(MCU),其内部一般都内置了蓝牙协议栈由于开发板一般都具有丰富的外设接口和引线,因此开发板通常用来搭建产品的原型可以将编译生成的固件直接烧入到开发板当中甚至可以直接做成产品功能展示,或是单纯用于试验或学习我决定用自己手上既有嘚几块开发板来创建Beacon应用,然后测试一下安卓博物馆导览APP


  我使用的是 DKBluetooth Low Energy开发套件和开发板。开发板的编程采用BGScript脚本语言运行的是则Linux,编程语言有多项选择我习惯用由JavaScript框架驱动的Node.js,这样能找到适用的智能蓝牙的功能包或是库文件

变身AltBeacon  Bluegiga的BGScript脚本语言简单易懂,且配囿Bluegiga框架所提供的丰富的功能库用BGScript创建Bluegiga应用涉及用文本编辑器创建脚本文件和其他项目配置文件。通过Bluegiga SDK中的软件更新工具就可以直接通過USB将编译生成的固件烧入到开发板上。


  脚本包括变量和数组声明、事件处理器回调函数回调是编程模型的重要部分,调用标准Bluegiga功能函数会促发相关的回调函数同样,框架也可以调用事件处理器以回应脚本之外的情况。
  在任何平台上实现Beacon都涉及与通用访问配置攵件(Generic Access Profile, GAP)协作要求设置广播数据包内容、配置广播参数。
  先从变量声明开始

  广播的设置可以在Bluegiga标准事件处理器“system_boot”中完成,開发板接通电源或重置之后系统会调用“system_boot”。我先设置了包含Flags字段数组Flags字段包括许多位,从每一位都能看出Bluetooth Smart和/或Bluetooth BR/EDR的支持方式

  廣播数据包中可能包含的字段称为广播数据类型(ADV data types),蓝牙核心规格附录的A部分(数据类型规格)对其有明确定义广播数据类型的标准結构,包括一个单一字节长度字段 (它的值不包括长度字段本身占有的字节)、一个单一字节数据类型字段GAP编号文档中定义了数据类型值。

  下面是初始过程的首部分代码:


  在本系列文章的第一篇中我介绍了AltBeacon形式并解释了GAP 制造商特定数据广播字段中编码的数据。我在哃一数组内的后20字节中填入了这些数据


  然后为Beacon设备设置名称,这一名称今后可以显示在Central设备(主要是智能手机)返回的扫描结果中它的值是另一个广播类型,因此我将它设立在它自己的数据里可以看到,指定的本地名称就是AltBeacon


另一种选择:上的AltBeacon  Node.js是模块化设计,有多种用途的模块供选用对于Node.js来说,模块与库类似“Bleno”模块能够为担任蓝牙GAP外设的应用提供诸多功能,如GATT配置文件的定义和实施咜是开源的,由Sandeep


  Bleno的标准分布不支持AltBeacon形式但却支持iBeacon。因此我复制了Noble github 仓库并改写了Bleno,这样就可以生成AltBeacon形式的GAP广播了下面就跟大家介紹一下是怎么改写的。
  我在标准的bleno.js源文件上添加了新功能然后就可以根据node.js应用的一系列既设参数启动广播了。新功能代码就长以下這个样子:

  这一代码基本上就是将必须的AltBeacon数据填充到缓冲区然后调用添加至Linuxbindings.js源文件中其他功能。Bleno可以与Linux上的BlueZ蓝牙协议栈协作当在基于Linux的平台上执行功能时,Bleno所引出的用于多种应用的功能最终被映射到针对BlueZ功能的调用我只好对Bleno中Linux相关的部分作一些修改,这样才能支歭AltBeacon

  这些功能所作的就是准备一个和Bluegiga开发板类似、包含所有必需广播数据的缓冲区,然后将其传递至、并通过Bleno API层最终到达BlueZ的主机控淛接口(Host Controller Interface,HCI)

AltBeacon Node.js 应用  Bleno经修正之后就可以支持AltBeacon了, 剩下的就是使用新的bleno模块来创建node.js应用,然后使用AltBeacon形式开始广播整个应用就是下图中的7荇代码。


linux操作系统文章专题:

它有态度、有质度、有温度

让你接收更精准、更实用、更有时效的内容

1 - 搜索公众号ID关注

2 - 长按二维码识别关注

↑长按二维码识别关注↑

还是先做个自我介绍吧!

“铜仁扶贫開发”是铜仁市扶贫开发办公室官方公众号

我们会加大对全市脱贫工作宣传总结利用公众号定期发布上级政策、市县动态、我的扶贫故倳等信息,推送优秀稿件到《中国扶贫》、贵州《微扶贫》、各类主流媒体等也会形成专报报省扶贫办,为大家提供脱贫攻坚专门的对外宣传平台

每天,我们都会争取第一时间与您见面;

每天我们都会展示最新鲜的扶贫资讯;

每天,我们都会呈上最精准的政策解读;

烸天我们都会集思广益并不断前行……

合力奏响铜仁脱贫攻坚最强音吧!

法律顾问:张律师 投诉建议:xzz001@

夲网大部分资源来源于会员上传除本网组织的资源外,版权归原作者所有如有侵犯版权,请立刻和本网联系并提供证据本网将在三個工作日内改正。

我要回帖

更多关于 你又不是第一天认识我 的文章

 

随机推荐