#region read write
private byte[] _readBytes;
public async Task<byte[]> BleClientReadChar(BleGattCharacteristic character)
{
return await Task.Run(() =>
{
if (!character.Service.GattDevice.Connected)
{
Error("[CSR]:BleClientReadChar when device is not connect!");
return null;
}
if (CsrBleDll.CsrBleClientReadCharByHandle(character.Service.GattDevice.Handle, character.Handle))
{
if (_readEvent.WaitOne(5000))
{
Debug("[CSR]:BleClientReadChar Success!");
return _readBytes;
}
}
Debug("[CSR]:BleClientReadChar Fail!");
return null;
});
}
public async Task<bool> BleClientWriteChar(BleGattCharacteristic character, byte[] data)
{
return await Task.Run(() =>
{
if (!character.Service.GattDevice.Connected)
{
Error("[CSR]:BleClientWriteChar when device is not connect!");
return false;
}
var value = Marshal.AllocHGlobal(data.Length);
Marshal.Copy(data, 0, value, data.Length);
if (CsrBleDll.CsrBleClientWriteCharByHandle(
character.Service.GattDevice.Handle, false, character.Handle, (ushort)data.Length, value))
{
if (_writeEvent.WaitOne(5000))
{
Marshal.FreeHGlobal(value);
Debug("[CSR]:BleClientWriteChar Success!");
return true;
}
}
Marshal.FreeHGlobal(value);
Debug("[CSR]:BleClientWriteChar Fail!");
return false;
});
}
public void BleClientWriteConfig(BleGattCharacteristic character, byte config)
{
if (!character.Service.GattDevice.Connected)
{
Error("[CSR]:BleClientWriteConfig when device is not connect!");
return;
}
if (!CsrBleDll.CsrBleClientWriteConfiguration(character.Service.GattDevice.Handle, character.DescriptorHandle,
character.Handle, config))
{
Error("[CSR]:BleClientWriteConfig Fail!");
}
}
CSR 蓝牙读写
最新推荐文章于 2019-04-08 17:39:03 发布