摘 要:Windows Phone 8.1是最新一代Windows Phone操作系統,為了滿足可穿戴設備的軟件需求,我們根據此平臺藍牙通信技術,開發了基于Windows Phone 8.1平臺的應用軟件。在這里,我們介紹了可穿戴設備的通信網絡系統,藍牙通信關鍵技術以及開發過程中遇到的問題。
【關鍵詞】Windows Phone 8.1可穿戴設備 藍牙通信
藍牙4.0技術的發展,使可穿戴設備從小眾、新穎轉變為了有用、主流的市場需求,因此促進了基于各種操作系統的可穿戴設備應用軟件市場的發展。Windows Phone平臺是全球第三大智能手機操作系統,它是微軟面對iPhone和Android的強勢,綜合地考慮了許多iPhone和Android的優點以及缺點的基礎上誕生的。Windows Phone 8.1是最新一代Windows Phone操作系統,可以說Windows Phone 8.1平臺仍屬于藍海階段,大部分可穿戴設備沒有Windows Store應用,但是考慮Windows生態系統的巨大潛力,它與可穿戴設備的結合將會賦予更多個人開發者以及開發團隊絕佳的發展機遇。因此我們為一些可穿戴設備開發了基于Windows Phone 8.1平臺的手機應用軟件。
1 通信系統設計
可穿戴設備使人脫離了電腦和智能手機的限制,催生了新的移動網絡入口,引領了個人局域網的全面升級。所以在我們開發的系統里,智能手機充當聯網服務器,而可穿戴設備將成為移動網絡輸入和輸出終端,讓人們隨時隨地接入互聯網。例如,通過智能手表自動輸入人體健康狀態和運動狀態,智能眼鏡負責輸出反饋結果。
下面我們以智能手表為例,簡單介紹通信網絡系統,如圖1所示。智能手表實時監測人體心率信息,通過藍牙通信把數據發送給智能手機,智能手機作為聯網服務器把數據發送給云服務器,接著云服務器把這些數據存入數據庫,并根據所需算法對心率數據進行分析計算,最終把結果反饋回智能手表。
2 關鍵技術
2.1 藍牙4.0技術
藍牙4.0版本將傳統藍牙技術、高速技術和低耗能技術合為一體,強化了藍牙在數據傳輸上的低功耗性能。此外,低成本和跨廠商互操作性,3毫秒低延遲、AES-128加密等諸多特色,可以用于計步器、心率監視器、智能儀表、傳感器物聯網等眾多領域,大大擴展藍牙技術的應用范圍。
可穿戴設備在藍牙4.0通信中是從機角色,從機的主要工作是對外廣播,接受主機的連接,并且與主機之間進行通信,其數據傳輸是通過特征值的讀寫來實現的。
2.2 Windows Phone 8.1藍牙通信
Windows Phone 8.1的配置符合藍牙技術聯盟的標準,它的藍牙技術支持兩個藍牙方案:一個是應用程序到應用程序的通信,另一個是應用程序到設備的通信。下面給出了Windows Phone 8.1在應用程序到設備的通信中,藍牙通信讀寫操作的具體代碼。
2.2.1 讀操作
//根據設備ID尋找藍牙設備
BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(ID);
//使用給定的服務 ID 返回 GATT 服務
var service = bleDevice.GetGattService(new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
//返回多個特征的矢量,這些特征由指定的 UUID 標識并屬于此 GattDeviceService 實例
var characteristics= recKEYService.GetCharacteristics(new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"))[0];
//創建監聽,監聽特征值變化
characteristics.ValueChanged += characteristics_ValueChanged;
await Characteristics.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristic-
ConfigurationDescriptorValue.Notify);
//特征值變化時的讀取函數
public void characteristics_ValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args)
{
var values = (await sender.ReadValueAsync()).Value.ToArray();
}
2.2.2 寫操作
//尋找藍牙設備
BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(ID);
//使用給定的服務 ID 返回 GATT 服務
var Service = bleDevice.GetGattService(new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
//寫數據
byte[] data = { 0xxx, 0xxx };
var characteristic = recKEYService.GetCharacteristics(new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"))[0];
await characteristic.WriteValueAsync(data.AsBuffer());
3 開發過程遇到的問題及解決方案
可穿戴設備為了滿足用戶需求,通常體型小巧,外觀精致,為此很多設備采用了一鍵多功能的設計。但這種設計可能會帶來藍牙數據傳輸的問題。我們具體分析,假設我們的協議是:藍牙通信共用同一服務通道,設備按鍵按下,特征值寫為0,按鍵彈起,特征值寫為1。按鍵的按下與彈起代表了兩種動作,特征值變化兩次,觸發了兩次特征值監聽函數,如果按下與彈起兩個動作時間間隔過小,按照本文3.2.1小節的方式(方式一,如圖2)去讀取特征值,我們會發現第一次觸發的讀取操作去執行時,此通道特征值有可能因為彈起動作已經從0變成了1,兩次讀操作得到的數據為11,并不是預期的01,出現了錯誤。
經過分析,為了使特征值讀操作能夠適應特征值迅速變化的情況,我們的解決方案是(方式二,如圖3):特征值變化時先將新特征值放入緩存中,然后隊列里的兩個讀操作函數,就可以一一對應的讀到相應的值,最終到01。
解決方案 具體代碼:
public void characteristics_ValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args)
{
uint dataLength = args.CharacteristicValue.Length;
byte[] values = new byte[dataLength];
DataReader reader = DataReader.FromBuffer(args.CharacteristicValue);
reader.ReadBytes(values);
}
4 結語
本文給出了可穿戴設備的通信網絡系統,重點闡述了基于Windows Phone 8.1的藍牙通信讀寫技術。我們開發的應用已經可以在Windows Store下載,下載量可觀,表明可穿戴設備軟件市場中Windows Phone應用開發依舊有廣闊的前景。
參考文獻
[1]微軟發布Windows Phone 8.1 Update及中國版Cortana[J].個人電腦,2014,08:91.
[2]林正.深入淺出:Windows Phone 8.1應用開發[M].北京:清華大學出版社,2014.
[3]封順天.可穿戴設備發展現狀及趨勢[J].信息通信技術,2014,03:52-57.
[4]王磊.基于藍牙4.0技術的防丟器的研究與設計[D].太原理工大學,2013.
作者簡介
徐圣凱(1990-),男,江蘇省徐州市人?,F為南京理工大學自動化學院碩士在讀。主研領域為計算機軟件、智能穿戴。
作者單位
南京理工大學自動化學院 江蘇省南京市 210000