CSR 蓝牙读写

来源:互联网 发布:linux cpu 超过100 编辑:程序博客网 时间:2024/05/16 06:47
 #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!");            }        }


原创粉丝点击