Delphi 的 Blooth LE(蓝牙4.0) 编程原理简介

使用Delphi做蓝牙BLE开发的一个问题 Delphi 的 BLE 开发,拖一个 TBlueToothLe 到界面上,使用这个控件,就可以进行 BLE 的开发,比如去连接一个蓝牙手环。Delphi 自带的 Demo 里面,有一个 BLEScanner 程序,可以作为开发的起点。 阅读详情

首先,Delphi 官方的例子程序里面,有BLE的例子,可以先参考。

蓝牙的不同版本:2.0 3.0 4.0 其通讯协议有很大的不同。4.0 就是 BLE,低功耗蓝牙。

以下是我经过自己写例子代码操作蓝牙设备的测试摸索后对BLE蓝牙编程原理的理解。安卓手机上测试通过。

Delphi 提供了BLE的控件:TBluetoothLE


拖一个控件放到界面上,设置控件的 Enable 为 True。程序启动后,该控件可以工作。


对一个 BLE 设备的读写操作的基本原理:


BLE 设备有多个不同的【服务】,Service;每个服务底下,有多个不同的【特征】, Characteristic。读写操作就是针对特征的【值】。


每个服务有一个 UUID,每个特征也有一个 UUID。


在 Delphi 底下采用 TBluetoothLE 控件操作 BLE 的基本方式:


1. 首先是设备发现。执行完设备发现后,TBluetoothLE 里面会产生多个设备实例对象。
   启动设备发现的代码:BluetoothLE1.DiscoverDevices(3000); 这里的 3000 是超时值。可以是 10 秒甚至更多。
   
   设备发现(扫描BLE蓝牙设备)中,BluetoothLE1 会触发事件:OnDiscoverLEDevice。这里会不停地触发。扫描动作完成后,会触发 OnEndDiscoverDevice 事件。可以在这个事件里面查看是否扫描到你要的设备。
   
2. 设备发现完成后,BluetoothLE1 里面就有多个设备的对象实例 TBluetoothLEDevice,通过 BluetoothLE1.DiscoveredDevices[i] 可以获取到。


3. 针对某个设备,执行服务发现(扫描其提供什么服务):BluetoothLE1.DiscoveredDevices[AIndex].DiscoverServices
3.1. 上述服务发现方法被调用后,会触发 OnServicesDiscovered 事件。这个事件提供了 AServiceList: TBluetoothGattServiceList,可以从里面获取到这个设备的所有服务对象。


4. 要操作某个设备的某个值:
4.1. 首先要根据服务的 UUID 获取到设备对象,方法:BluetoothLE1.DiscoveredDevices[i]
4.2. 然后,针对该设备对象,获取其服务对象(根据该服务的 UUID),方法:BluetoothLE1.GetService; 
4.3. 获取特征对象(采用该特征的 UUID),方法:BluetoothLE1.GetCharacteristic;
4.4. 如果是写数据到蓝牙设备,则是修改该特征对象的值:ACharacteristic.Value := AValue; 然后,将该特征对象写入蓝牙设备:BluetoothLE1.WriteCharacteristic(ADevice, ACharacteristic); 到此数据已经写入蓝牙设备。
4.5. 如果是要监听某个特征的广播,注册:ADevice.SetCharacteristicNotification(ACharacteristic, True); 注册完成后,收到蓝牙设备的广播数据,BluetoothLE1 会触发 OnE1CharacteristicRead 事件。通过该事件提供的 ACharacteristic: TBluetoothGattCharacteristic 特征对象,读到来自蓝牙的广播数据。数据如何解释,则看具体设备或具体的定义了。

delphi 蓝牙 TBluetoothLE delphi 蓝牙 TBluetoothLE、TBluetoothLEManager BLE http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_Bluetooth_Low_Energy 指定UUID HRSERVICE: TBluetoothUUID = '{0000180D-0000-1000-8000-00805F9B3... 阅读详情

相关推荐

Delphi蓝牙通信组件库:VCL控件详解

在本章节中,我们将对蓝牙 VCL 控件库有一个基本的认识和了解。VCL(Visual Component Library)是Delphi中的一个组件库,而蓝牙 VCL 控件库则在此基础上扩展了蓝牙功能。蓝牙技术已经成为当代通信技术的重要组成部分,使得电子设备之间的无线连接变得简单便捷。蓝牙 VCL 控件库将蓝牙功能封装为控件,大大简化了在Delphi开发环境中实现蓝牙应用的复杂性。该库主要通过一系列的组件来支持常见的蓝牙操作,如文件传输、数据交换等。

weixin_42608299的博客 1030

【Delphi】经典蓝牙控件(Android)

在用 Delphi 开发手机APP的时候,肯定会遇到使用蓝牙功能,蓝牙按照发展版本不同,区分为经典蓝牙和低功耗蓝牙,本文介绍的是经典蓝牙的Delphi控件,由于IOS没有开放经典蓝牙功能,所以本文讨论的只是Android的经典蓝牙控件。 开发蓝牙功能的时候,需要调用一些列的函数,比较繁杂,于是我们就将这些功能封装成控件,控件只提供简单的2个属性,8个函数和一个事件就可以立即使用手机的经典蓝牙功能。 控件源说明及代码下载(源代码位于2.5中) 控件Demo下载(APK) 全部源代码(...

sensor_WU 博客 3034

Delphi 蓝牙 BLEScanner

Delphi 蓝牙 BLEScanner

delphi开发安卓蓝牙的问题

这是一个困扰了我一天的问题,出现的情况是:之前在D10.3下做蓝牙应用的程序,在低版本的安卓下是可以正常使用的。但D10.3不能支持高版本的安卓系统,所以就更换了D11进行测试。 在使用D11对原D10.3的代码进行调整后,编译的APP可以正常在高低版本的安卓下安装使用,可出现一个问题是,安卓11下不能正确搜索到蓝牙设备(低版本的安卓下一切正常)。 最后发现是动态授权的问题,原因如下: 早期的安卓版本使用蓝牙时,不需要动态授权,后来需要动态授权时必须增加对“定位”的授权才能使用蓝牙,所以我在10.3的

tanqth的专栏 1万+

Delphi 经典蓝牙控件及Demo (android版本)

1. Delphi 经典蓝牙(Android)控件原代码 2. 控件演示程序工程文件源代码

Delphi 蓝牙 HeartRateMonitor

Delphi 蓝牙 HeartRateMonitor

Delphi XE5 android 蓝牙通讯传输

代码来自网络 http://files.cnblogs.com/china1/Bluetooth_LEDs_android.rar 转载于:https://www.cnblogs.com/china1/p/3427949.html

weixin_34295316的博客 561

Android实例-Delphi开发蓝牙官方实例解析(XE10+小米2+小米5)

2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用!

【Delphi】使用Windows 中的蓝牙功能

Delphi 使用windows 的蓝牙功能代码

sensor_WU 博客 1480

delphi 蓝牙VCL——BlueToothFramewor,有demo

delphi的蓝牙控件,有示例可操作研究一下是怎样进行连接通信的。也可用于红外,串口通信。

Delphi经典蓝牙控件(android版)源代码

1. Delphi 经典蓝牙控件(Android)源代码 2. 直接可以连接经典蓝牙设备 3. 包括说明文件 4. 包括演示文件的源代码

delphi BLE 学习

TBluetoothLE 控件 TBluetoothLE.FManager: TBluetoothLEManager; class constructor TBluetoothLEManager.Create; begin FBluetoothManagerClass := TPlatformBluetoothLEManager; end; FM...

weixin_34290000的博客 666

Delphi XE10 蓝牙串口通讯 DEMO

Delphi XE10 蓝牙串口通讯 DEMO 项目简介 本资源提供了一个基于Delphi XE10开发的蓝牙串口通讯示例程序。对于需要在Delphi环境下实现蓝牙通信功能的开发者来说,这个DEMO是一个非常实用的参考。它展示了如何利用Delphi的标准串口通讯协议来实现设备间的无线数据传输,特别适用于那些对蓝牙技术在Delphi中的应用尚不熟悉的开发者。 主要功能 蓝牙设备发现:自动搜索周围可用的蓝牙设备。 串口通讯模拟:通过蓝牙连接模拟传统的串口数据交换,实现数据的发送与接收。 用户界面友好:简洁的界面设计,方便用户操作和查看通讯状态。 兼容性测试:已在多种蓝牙设备上进行了基本的兼容性测试,确保了较好的实用性。 技术要点 使用Delphi XE10的VCL或FireMonkey框架来构建GUI界面。 利用了蓝牙API或者第三方蓝牙库(如TMS Bluetooth Pascal源码组件)进行底层蓝牙通讯处理。 实现串口通讯的模拟,包括打开、关闭连接,读写数据等核心操作。 可能涉及到了错误处理机制,以保证程序的健壮性。 快速启动 环境要求:确保您的开发环境中已安装有Delphi XE

delphiXE开发蓝牙BLE4.0程序时遇到的notification问题

IDE环境delphiXE8 蓝牙硬件ST17H26 service:0xfee7 chareter:0xfec9 const u16 my_OEMServiceUUID=0xfee7;const u16 my_OEMCharaterUUID=0xfec9; 在my_Attributes[]中添加 {4,2,2,(u8*)(&my_primaryServiceUUID)...

weixin_30519071的博客 754

Qt6.5.1+WebRTC学习笔记(十二)环境搭建流媒体服务器(ubuntu22.04+SRS)

若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。这个开源项目资料比较全,笔者仅在此记录下搭建过程。

aggs1990的专栏 3364

Visual Studio 命令提示符工具区别与使用场景

Visual Studio会提供一系列命令提示符工具,这些工具应用在哪些场景呢?本文进行了相关介绍。

cicada15的博客 3492

Delphi XE7的蓝牙 Bluetooth

Delphi XE7已经内建了蓝牙功能,提供了System.Bluetooth.pas单元 顾名思义,System表示XE7的蓝牙功能可以在Windows,Android,IOS系统内使用 System.Bluetooth单元中主要包含一下几个类,其中带LE的支持所有系统,不带LE的类不支持Ios系统,带与不带LE功能是一样的。 TBluetoothManagerTBluetoothDevi...

weixin_30596023的博客 455

set_output_delay的本质

set_output_delay的本质

qq_33300585的博客 3387

Bluetooth LE(低功耗蓝牙) - 第六部分(完)

原文地址: http://blog.csdn.net/likebamboo/article/details/27485987 回顾:      在本系列前面的文章中我们已经了解了,在我们从一个TI SensorTag中获取温度和湿度数据之前,我们需要经历的各种步骤。在本系列中的最后一篇文章,我们将完成注册并接收SensorTag的通知,并接收温度和湿度数据。

Barving的专栏 979

MPU6050数据融合避坑指南:当欧拉角遇到万向节死锁,我们该如何处理?

本文深入探讨了MPU6050在姿态解算中遇到的欧拉角万向节死锁问题,提供了四元数解决方案及工程实践策略。通过分析死锁现象的本质,介绍四元数的优势与实现方法,并给出必须使用欧拉角时的三种应对方案,帮助开发者有效规避数据跳变和解算失效问题。

weixin_30415113的博客 541

告别TwinCAT:手把手教你用IgH EtherCAT Master在LinuxCNC上搭建实时运动控制平台

本文详细介绍了如何利用IgH EtherCAT Master和LinuxCNC搭建开源实时运动控制平台,替代商业软件TwinCAT。通过分步指南,包括实时Linux环境配置、EtherCAT主站安装、LinuxCNC集成及多轴同步控制实现,帮助开发者构建高性能、低成本的工业自动化解决方案。

weixin_42641741的博客 401

Delphi XE7中蓝牙 Bluetooth例子的使用

打算用xe7写个简单的蓝牙程序,作为遥控,但是delphi xe7中自带的程序安装到手机后并没有办法正常使用,例程位于目录‘\Embarcadero\Studio\15.0\Samples\Object Pascal\Mobile Samples\Device Sensors and Services\Bluetooth\Classic Bluetooth Basic app’。 如果直接安装到

CZDZL的专栏 4740

【UG/NX二次开发】记录在二次开发中遇到的坑

【UG/NX二次开发】记录在二次开发中遇到的坑

Trust_MJ的博客 2707
上一篇: Delphi 的文件操作和路径操作
下一篇: Delphi BLE 的一个 bug
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值