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