国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

量身定做自己的專屬Beacon

發布時間:2015-12-4 11:13    發布者:designapp

  Beacon系列的前兩篇文章中我已經介紹了Beacon應用開發的概念和AltBeacon廣播形式,并詳細講解了如何利用AltBeacon安卓API開發博物館導覽APP原型。在今天的最終篇里,我將向大家介紹如何測試這一博物館導覽APP。
選擇藍牙開發板,啟動你的專屬Beacon!
  我們暫時還沒有現成采用AltBeacon形式的Beacon,但手上有不少藍牙開發板。藍牙開發板是具有智能藍牙功能的微控制器(MCU),其內部一般都內置了藍牙協議棧。由于開發板一般都具有豐富的外設接口和引線,因此開發板通常用來搭建產品的原型可以將編譯生成的固件直接燒入到開發板當中,甚至可以直接做成產品功能展示,或是單純用于試驗或學習。我決定用自己手上既有的幾塊開發板來創建Beacon應用,然后測試一下安卓博物館導覽APP。
  我使用的是Bluegiga DKBluetooth Low Energy開發套件和英特爾Edison開發板。Bluegiga開發板的編程采用BGScript腳本語言。英特爾Edison運行的是則Linux,編程語言有多項選擇。我習慣用由JavaScript框架驅動的Node.js,這樣能找到適用的智能藍牙的功能包或是庫文件。
Bluegiga變身AltBeacon
  Bluegiga的BGScript腳本語言簡單易懂,且配有Bluegiga框架所提供的豐富的功能庫。用BGScript創建Bluegiga應用涉及用文本編輯器創建腳本文件和其他項目配置文件。通過Bluegiga SDK中的軟件更新工具,就可以直接通過USB將編譯生成的固件燒入到開發板上。
  腳本包括變量和數組聲明、事件處理器回調函數。回調是編程模型的重要部分,調用標準Bluegiga功能函數會促發相關的回調函數。同樣,框架也可以調用事件處理器,以回應腳本之外的情況。
  在任何平臺上實現Beacon都涉及與通用訪問配置文件(Generic Access Profile, GAP)協作,要求設置廣播數據包內容、配置廣播參數。
  Bluegiga AltBeacon實施的要素如下圖:
  先從變量聲明開始。

                        圖1 – 數組聲明
  廣播的設置可以在Bluegiga標準事件處理器“system_boot”中完成,開發板接通電源或重置之后,系統會調用“system_boot”。我先設置了包含Flags字段數組,Flags字段包括許多位,從每一位都能看出Bluetooth Smart和/或Bluetooth BR/EDR的支持方式。
  廣播數據包中可能包含的字段稱為廣播數據類型(ADV data types),藍牙核心規格附錄的A部分(數據類型規格)對其有明確定義。廣播數據類型的標準結構,包括一個單一字節長度字段 (它的值不包括長度字段本身占有的字節)、一個單一字節數據類型字段。GAP編號文檔中定義了數據類型值。
  下面是初始過程的首部分代碼:

             圖2 –在system_boot事件處理器中定義flags廣播類型
  在本系列文章的第一篇中,我介紹了AltBeacon形式并解釋了GAP 制造商特定數據廣播字段中編碼的數據。我在同一數組內的后20字節中填入了這些數據。

            圖3 – 定義制造商特定數據字段中的AltBeacon數據
  然后為Beacon設備設置名稱,這一名稱今后可以顯示在Central設備(主要是智能手機)返回的掃描結果中。它的值是另一個廣播類型,因此我將它設立在它自己的數據里。可以看到,指定的本地名稱就是AltBeacon。

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


                         圖5 – 配置GAP 廣播
  這樣,我的Bluegiga定制AltBeacon準備就緒。


               圖6 –藍兆科技DKBLE上的AltBeacon
另一種選擇:英特爾Edison上的AltBeacon

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

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


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


              圖9 –bleno/lib/linux/hci-ble.js中的新功能
  這些功能所作的就是準備一個和Bluegiga開發板類似、包含所有必需廣播數據的緩沖區,然后將其傳遞至、并通過Bleno API層,最終到達BlueZ的主機控制接口(Host Controller Interface,HCI)。
AltBeacon Node.js 應用
  Bleno經修正之后就可以支持AltBeacon了, 剩下的就是使用新的bleno模塊來創建node.js應用,然后使用AltBeacon形式開始廣播。整個應用就是下圖中的7行代碼。

                         圖10 –AltBeacon node.js 應用
  為運行AltBeacon APP,我使用Putty通過SSH或是telnet建立了與英特爾Edison的終端會話,然后運行命令行里的node app.js。


                                  圖11 – Putty建立終端對話
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
                               
               
本文地址:http://m.qingdxww.cn/thread-158528-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人黄色网址| 男女爽爽无遮挡午夜视频在线观看| 恋老视频 国产国佬| 我年轻漂亮的继坶2中字在线播放| 尤物国产在线精品三区| 色影影院| 欧美一区二区三| 天天干夜夜做| 探花系列| 又爽又黄又紧的免费视频| 国产AV精品久久久免费看| 久久久久久久久a免费| 秀婷程仪公欲息肉婷在线观看| 亚洲精品动漫免费二区| 色哟哟www网站入口成人学校| 亚洲欧美日韩中文高清一| 四虎影院永久| 天堂av2017男人的天堂| 欲梦ai换脸www在线观看视频| 国产精品A久久777777| 欧洲xxxxx| 一个色综合久久| 亚洲视频免费| 污污的视频在线播放| 天堂日韩| 91九色porny蝌蚪| 久久久无码精品无码国产人妻丝瓜 | 亚洲入口| 亚洲小视频在线播放| 超碰免费视频公开97| 男女亲吻摸下面吃奶视频| 曰曰夜夜在线影院视| 亚洲黄色天堂| 四虎地址| 午夜精品一区| 99视频免费在线| 免费99精品国产自在现线| 中文字幕午夜福利片| 青青青国产依人精品视频| 天堂影院在线观看| 五月色婷婷综合开心网最新|