蓝牙4.0 BLE 实践

一、添加权限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

二、添加引用"Plugin.BLE"

     通过nuget添加Plugin.BLE包。

三、获取蓝牙代理   

Plugin.BLE.Abstractions.Contracts.IAdapter _adapter = CrossBluetoothLE.Current.Adapter;

四、打开蓝牙

     这里假设已手动打开蓝牙。

五、搜索BLE设备

            this.btnScan.Click += async (object sender, EventArgs e) => {

                await _adapter.StartScanningForDevicesAsync();

            };

            //订阅设备发现事件

            _adapter.DeviceDiscovered += (s, e) =>

            {

                Console.WriteLine("Discovered device: " + e.Device.Name);

                _device = e.Device;

                this.Activity.RunOnUiThread(() =>

                {

                    this._listAdapter = new DevicesAdapter(this.Activity, _adapter.DiscoveredDevices);

                    this.lvLocks.Adapter = this._listAdapter;

                });

            };

六、连接蓝牙BLE终端设备  

            //ListView点击事件
            this.lvLocks.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
            {
                Console.Write("ItemClick: " + this._listAdapter.Items[e.Position]);
                _adapter.StopScanningForDevicesAsync();//停止扫描
                // select the item
                this.lvLocks.ClearFocus();
                this.lvLocks.Post(() =>
                {
                    this.lvLocks.SetSelection(e.Position);
                });
                // 连接蓝牙设备
                _adapter.ConnectToDeviceAsync(_device);

            };
            //成功连接设备事件
            _adapter.DeviceConnected += (s, e) =>
            {
                Console.WriteLine("DeviceConnected: " + e.Device.Name);

            };

七、启动服务发现

     这里我们已经有serviceUUID和characteristicUUID,所以此步省略。

八、获取Characteristic

                //连接到指定服务
                var service = await _device.GetServiceAsync(ServiceId);
                //接收用的特征
                var _receive = await service.GetCharacteristicAsync(ReceiveCharId);
                //发送用的特征

                var _transmit = await service.GetCharacteristicAsync(TransmitCharId);

九、读Characteristic

                _receive.ValueUpdated += (ss, ee) =>
                {
                    var bytes = ee.Characteristic.Value;
                    if (bytes == null || bytes.Length == 0)
                        return;
                    lock (readBuffer)
                    {
                        if (readBuffer.Count + bytes.Length > 1000)
                        {
                            readBuffer.RemoveRange(0, 1000 / 2);
                        }
                        readBuffer.AddRange(bytes);
                    }
                };

                _receive.StartUpdatesAsync();

十、写Characteristic

                //发送数据

                await _transmit.WriteAsync(new byte[] { 0x01, 0x02 });

注:蓝牙单次只能最多传输20个字节。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝牙4.0BLE(低耗蓝牙)完全开发手册是一本详细介绍蓝牙4.0BLE技术以及其开发的书籍。该手册提供了全面的信息,帮助开发者理解和运用蓝牙4.0BLE技术。 在蓝牙4.0BLE完全开发手册中,首先会对蓝牙技术做简要介绍,包括其发展历史、应用领域和主要特点。接下来会详细讲解蓝牙4.0BLE的原理和架构,以及与传统蓝牙的区别和优势。 然后,手册会深入介绍蓝牙4.0BLE的开发过程。首先是硬件方面,讲解了蓝牙4.0BLE芯片的选择和使用,以及与其他硬件模块的接口和连接。 接着,手册会详细介绍蓝牙4.0BLE的软件开发。从蓝牙协议栈的架构和功能开始,包括扫描、连接、传输和配置等。随后,会讲解关于蓝牙4.0BLE的数据传输和安全性的技术细节,如数据格式、特征值和服务的定义等。 在软件开发的过程中,手册还会介绍一些常见的开发工具和开发环境,包括蓝牙4.0BLE开发板、调试工具和开发软件的配置和操作。 最后,手册还会提供一些实际案例和应用示例,以便开发者更好地理解和运用蓝牙4.0BLE技术。同时,手册也会介绍一些开发中的常见问题和解决方法,以及软件和硬件的调试技巧和注意事项。 总之,蓝牙4.0BLE完全开发手册是一本全面而实用的参考书,适合对蓝牙4.0BLE技术感兴趣的开发者和工程师,能够帮助他们深入理解蓝牙4.0BLE技术,掌握开发过程中的关键技术和实践经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值