<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 量身定做自己的專(zhuān)屬Beacon

量身定做自己的專(zhuān)屬Beacon

作者:作者:藍牙技術(shù)聯(lián)盟 技術(shù)項目經(jīng)理Martin Woolley 時(shí)間:2015-07-30 來(lái)源: 收藏


  Beacon系列的前兩篇文章中我已經(jīng)介紹了Beacon應用開(kāi)發(fā)的概念和AltBeacon廣播形式,并詳細講解了如何利用AltBeacon安卓API開(kāi)發(fā)博物館導覽APP原型。在今天的最終篇里,我將向大家介紹如何測試這一博物館導覽APP。

選擇藍牙開(kāi)發(fā)板,啟動(dòng)你的!
  我們暫時(shí)還沒(méi)有現成采用AltBeacon形式的Beacon,但手上有不少藍牙開(kāi)發(fā)板。藍牙開(kāi)發(fā)板是具有智能藍牙功能的微控制器(MCU),其內部一般都內置了藍牙協(xié)議棧。由于開(kāi)發(fā)板一般都具有豐富的外設接口和引線(xiàn),因此開(kāi)發(fā)板通常用來(lái)搭建產(chǎn)品的原型可以將編譯生成的固件直接燒入到開(kāi)發(fā)板當中,甚至可以直接做成產(chǎn)品功能展示,或是單純用于試驗或學(xué)習。我決定用自己手上既有的幾塊開(kāi)發(fā)板來(lái)創(chuàng )建Beacon應用,然后測試一下安卓博物館導覽APP。
  我使用的是 DKBluetooth Low Energy開(kāi)發(fā)套件和開(kāi)發(fā)板。開(kāi)發(fā)板的編程采用BGScript腳本語(yǔ)言。運行的是則Linux,編程語(yǔ)言有多項選擇。我習慣用由JavaScript框架驅動(dòng)的Node.js,這樣能找到適用的智能藍牙的功能包或是庫文件。

變身AltBeacon
  Bluegiga的BGScript腳本語(yǔ)言簡(jiǎn)單易懂,且配有Bluegiga框架所提供的豐富的功能庫。用BGScript創(chuàng )建Bluegiga應用涉及用文本編輯器創(chuàng )建腳本文件和其他項目配置文件。通過(guò)Bluegiga SDK中的軟件更新工具,就可以直接通過(guò)USB將編譯生成的固件燒入到開(kāi)發(fā)板上。
  腳本包括變量和數組聲明、事件處理器回調函數?;卣{是編程模型的重要部分,調用標準Bluegiga功能函數會(huì )促發(fā)相關(guān)的回調函數。同樣,框架也可以調用事件處理器,以回應腳本之外的情況。
  在任何平臺上實(shí)現Beacon都涉及與通用訪(fǎng)問(wèn)配置文件(Generic Access Profile, GAP)協(xié)作,要求設置廣播數據包內容、配置廣播參數。
  Bluegiga AltBeacon實(shí)施的要素如下圖:
  先從變量聲明開(kāi)始。

本文引用地址:http://dyxdggzs.com/article/278059.htm

                        圖1 – 數組聲明

  廣播的設置可以在Bluegiga標準事件處理器“system_boot”中完成,開(kāi)發(fā)板接通電源或重置之后,系統會(huì )調用“system_boot”。我先設置了包含Flags字段數組,Flags字段包括許多位,從每一位都能看出Bluetooth Smart和/或Bluetooth BR/EDR的支持方式。

  廣播數據包中可能包含的字段稱(chēng)為廣播數據類(lèi)型(ADV data types),藍牙核心規格附錄的A部分(數據類(lèi)型規格)對其有明確定義。廣播數據類(lèi)型的標準結構,包括一個(gè)單一字節長(cháng)度字段 (它的值不包括長(cháng)度字段本身占有的字節)、一個(gè)單一字節數據類(lèi)型字段。GAP編號文檔中定義了數據類(lèi)型值。

  下面是初始過(guò)程的首部分代碼:

             圖2 –在system_boot事件處理器中定義flags廣播類(lèi)型

  在本系列文章的第一篇中,我介紹了AltBeacon形式并解釋了GAP 制造商特定數據廣播字段中編碼的數據。我在同一數組內的后20字節中填入了這些數據。


            圖3 – 定義制造商特定數據字段中的AltBeacon數據

  然后為Beacon設備設置名稱(chēng),這一名稱(chēng)今后可以顯示在Central設備(主要是智能手機)返回的掃描結果中。它的值是另一個(gè)廣播類(lèi)型,因此我將它設立在它自己的數據里??梢钥吹?,指定的本地名稱(chēng)就是AltBeacon。


                圖4 – 建立用于掃描響應的本地名稱(chēng)
  配置廣播參數包括調用Bluegiga的一些功能、數組。

                         圖5 – 配置GAP 廣播

  這樣,我的Bluegiga定制AltBeacon準備就緒。

               圖6 –藍兆科技DKBLE上的AltBeacon

另一種選擇:上的AltBeacon

  Node.js是模塊化設計,有多種用途的模塊供選用。對于Node.js來(lái)說(shuō),模塊與庫類(lèi)似?!癇leno”模塊能夠為擔任藍牙GAP外設的應用提供諸多功能,如GATT配置文件的定義和實(shí)施。它是開(kāi)源的,由Sandeep Mistry創(chuàng )建。SandeepMistry還創(chuàng )建了Noble模塊,可以用來(lái)創(chuàng )建GAP中央模式設備的相關(guān)軟件。Bleno和Noble都位于github上。
  Bleno的標準分布不支持AltBeacon形式,但卻支持iBeacon。因此,我復制了Noble github 倉庫并改寫(xiě)了Bleno,這樣就可以生成AltBeacon形式的GAP廣播了。下面就跟大家介紹一下是怎么改寫(xiě)的。
  我在標準的bleno.js源文件上添加了新功能,然后就可以根據node.js應用的一系列既設參數啟動(dòng)廣播了。新功能代碼就長(cháng)以下這個(gè)樣子:

                 圖7 –bleno/lib/bleno.js中的新功能

  這一代碼基本上就是將必須的AltBeacon數據填充到緩沖區,然后調用添加至Linuxbindings.js源文件中其他功能。Bleno可以與Linux上的BlueZ藍牙協(xié)議棧協(xié)作,當在基于Linux的平臺上執行功能時(shí),Bleno所引出的用于多種應用的功能最終被映射到針對BlueZ功能的調用。我只好對Bleno中Linux相關(guān)的部分作一些修改,這樣才能支持AltBeacon。

                               圖8 –bleno/lib/linux/bindings.js中的新功能

              圖9 –bleno/lib/linux/hci-ble.js中的新功能

  這些功能所作的就是準備一個(gè)和Bluegiga開(kāi)發(fā)板類(lèi)似、包含所有必需廣播數據的緩沖區,然后將其傳遞至、并通過(guò)Bleno API層,最終到達BlueZ的主機控制接口(Host Controller Interface,HCI)。

AltBeacon Node.js 應用
  Bleno經(jīng)修正之后就可以支持AltBeacon了, 剩下的就是使用新的bleno模塊來(lái)創(chuàng )建node.js應用,然后使用AltBeacon形式開(kāi)始廣播。整個(gè)應用就是下圖中的7行代碼。


                         圖10 –AltBeacon node.js 應用

  為運行AltBeacon APP,我使用Putty通過(guò)SSH或是telnet建立了與英特爾Edison的終端會(huì )話(huà),然后運行命令行里的node app.js。

                                  圖11 – Putty建立終端對話(huà)


linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>