17,740
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 连接蓝牙设备
/// </summary>
/// <param name="id"></param>
public async Task StartBleDeviceConnect(string id)
{
CurrentDevice = await BluetoothLEDevice.FromIdAsync(id);
if (CurrentDevice != null)
{
Guid guid = new Guid(Guid);
GattDeviceServicesResult re = await CurrentDevice.GetGattServicesForUuidAsync(guid);
if (re.Services.Count > 0)
{
CurrentService = re.Services[0];
if (CurrentService != null)
{
GetCurrentNotifyCharacteristic();
}
else
{
//主服务发现失败
}
}
}
}
/// <summary>
/// 设置通知特征对象。
/// </summary>
/// <returns></returns>
private async void GetCurrentNotifyCharacteristic()
{
//读
Guid guid2 = new Guid(ReadGuid);
GattCharacteristicsResult result = await CurrentService.GetCharacteristicsForUuidAsync(guid2);
if (result.Characteristics.Count > 0)
{
CurrentNotifyCharacteristic = result.Characteristics[0];
CurrentNotifyCharacteristic.ProtectionLevel = GattProtectionLevel.Plain;
CurrentNotifyCharacteristic.ValueChanged += Characteristic_Changed;
Console.WriteLine("事件绑定成功");
await EnableNotifications(CurrentNotifyCharacteristic);
}
else
{
//读服务发现失败
}
}
/// <summary>
/// 设置特征对象为接收通知对象
/// </summary>
/// <param name="characteristic">CurrentNotifyCharacteristic</param>
/// <returns></returns>
public async Task EnableNotifications(GattCharacteristic characteristic)
{
GattCommunicationStatus status = await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync(GattClientCharacteristicConfigurationDescriptorValue.Notify);//status返回为success
await GetCurrentWriteCharacteristic();
}
/// <summary>
/// 设置写特征对象。
/// </summary>
/// <returns></returns>
public async Task GetCurrentWriteCharacteristic()
{
string msg = "";
Guid guid = new Guid(WriteGuid);
GattCharacteristicsResult result = await CurrentService.GetCharacteristicsForUuidAsync(guid);
if (result.Characteristics.Count > 0)
{
CurrentWriteCharacteristic = result.Characteristics[0];
}
else
{
//读服务发现失败
}
}