unity 2017.3 安卓藍芽(二)訂閱藍芽及資料解析
阿新 • • 發佈:2019-02-13
接上篇,我們寫到了連線藍芽,之後我們就需要訂閱藍芽的資訊了。
訂閱藍芽訊息
最後一個引數是一個回撥,它會傳回三個資訊分別是地址、UUID和資料,這個資料是串列埠通訊中常用的byte[],出於專案需要,我要進行一次資料轉換。
/// <summary> /// 訂閱藍芽訊息 /// </summary> public void SubscribeBluetoothMsg() { Show("開始訂閱機器人訊息!"); BluetoothLEHardwareInterface.SubscribeCharacteristicWithDeviceAddress(bleAddress, _ServiceUUID, _NotifyUUID, delegate { }, OnCharacteristicNotification); }
資料轉換
這部分程式碼負責將收到的資料轉換為16進位制字串資訊,並顯示在UI上方便觀察。
/// <summary> /// 資料轉換 /// </summary> void OnCharacteristicNotification(string deviceAddress, string characteristicUUID, byte[] data) { Show("資料解析"); StringBuilder hex = new StringBuilder(data.Length * 2); foreach (byte b in data) { hex.AppendFormat("{0:x2}", b); } string str = hex.ToString(); dataText[7].text = str; parseSource(str); }
資料解析
如果要利用藍芽傳回的資訊,可以在這一部分進行處理。
例如,拿到該資料的訊息頭。
/// <summary>
/// 解析資料
/// </summary>
void parseSource(string data)
{
Show("收到新資訊,解析...");
string head = string.Format("{0}{1}{2}{3}", data[0], data[1], data[2], data[3]);
}