接上篇,我们写到了连接蓝牙,之后我们就需要订阅蓝牙的信息了。
订阅蓝牙消息
最后一个参数是一个回调,它会传回三个信息分别是地址、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]); }