1. 程式人生 > >unity 2017.3 安卓藍芽(二)訂閱藍芽及資料解析

unity 2017.3 安卓藍芽(二)訂閱藍芽及資料解析

接上篇,我們寫到了連線藍芽,之後我們就需要訂閱藍芽的資訊了。

訂閱藍芽訊息

最後一個引數是一個回撥,它會傳回三個資訊分別是地址、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]);
    }