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]);
    }

猜你喜欢

转载自blog.csdn.net/testiness_wind/article/details/80692091