delphi 蓝牙技术

D:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\Classic Bluetooth Basic app

System.Bluetooth

Bluetooth Low Energy (BLE)

小米手环就是BLE4.0,在android手机上用HMBLEComAssistant.apk可以搜到小米手环。

https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx

update,2015-09-25 12:08:41用delphi的BLE例子搜到小米手环了!!

Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\BLEScanner

蓝牙GAP、GATT(Generic Attribute Profile)

蓝牙音箱,通过android、iPhone都可以搜索到。

小米蓝牙音箱和小米手环的蓝牙版本完全相同吗?

蓝牙耳机:蓝牙协议:HFP/A2DP/HSP/AVRCP

手环里使用了蓝牙4.0 BLE技术

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_Bluetooth

http://docwiki.embarcadero.com/RADStudio/XE8/en/Using_Bluetooth_Low_Energy

http://docwiki.embarcadero.com/CodeExamples/Seattle/en/Heart_Rate_Monitor_Sample

https://developer.apple.com/bluetooth/

蓝牙各种UUID

Discovering Devices

BluetoothLE does not work as the Classic Bluetooth, you do not need to pair the devices. BluetoothLE clients need to discover BluetoothLE servers.

蓝牙版本 V4.0 BLE

一节钮扣电池在静态工作状态可以支持一年。

蓝牙低功耗,也就是早前的Wibree,是蓝牙4.0版本的一个子集,它有着全新的协议栈,可快速建立简单的链接。作为蓝牙1.0 – 3.0版本中蓝牙标准协议的替代方案,它主要面向对功耗需求极低、用纽扣电池供电的应用。芯片设计可有两种:双模、单模和增强的早期版本。早期的Wibree蓝牙ULP(超低功耗)的名称被废除,取而代之的是后来用于一时的BLE。

delphi 获取小米手环数据

手环在android上看到的

- Discovering services -->
- GAP - {----00805F9B34FB}
- Device Name - {00002A00----00805F9B34FB}
- Appearance - {00002A01----00805F9B34FB}
- Peripheral Privacy Flag - {00002A02----00805F9B34FB}
- Peripheral Preferred Connection Parameters - {00002A04----00805F9B34FB}
- GATT - {----00805F9B34FB}
- Service Changed - {00002A05----00805F9B34FB}
- - {0000FEE0----00805F9B34FB}
- - {0000FF01----00805F9B34FB}
- - {0000FF02----00805F9B34FB}
- - {0000FF03----00805F9B34FB}
- - {0000FF04----00805F9B34FB}
- - {0000FF05----00805F9B34FB}
- - {0000FF06----00805F9B34FB}
- - {0000FF07----00805F9B34FB}
- - {0000FF08----00805F9B34FB}
- - {0000FF09----00805F9B34FB}
- - {0000FF0A----00805F9B34FB}
- - {0000FF0B----00805F9B34FB}
- - {0000FF0C----00805F9B34FB}
- - {0000FF0D----00805F9B34FB}
- - {0000FF0E----00805F9B34FB}
- - {0000FF0F----00805F9B34FB}
- - {0000FEE1----00805F9B34FB}
- - {0000FEDD----00805F9B34FB}
- - {0000FEDE----00805F9B34FB}
- - {0000FEDF----00805F9B34FB}
- - {0000FED0----00805F9B34FB}
- - {0000FED1----00805F9B34FB}
- - {0000FED2----00805F9B34FB}
- - {0000FED3----00805F9B34FB}
- - {0000FEE7----00805F9B34FB}
- - {0000FEC7----00805F9B34FB}
- - {0000FEC8----00805F9B34FB}
- - {0000FEC9----00805F9B34FB}
- IMMEDIATE ALERT - {----00805F9B34FB}
- Alert Level - {00002A06----00805F9B34FB}

View UUID

手环在苹果上看到的,少了前2行GAP和GATT。

 -  - {0000FEE0----00805F9B34FB}
- - {0000FF01----00805F9B34FB}
- - {0000FF02----00805F9B34FB}
- - {0000FF03----00805F9B34FB}
- - {0000FF04----00805F9B34FB}
- - {0000FF05----00805F9B34FB}
- - {0000FF06----00805F9B34FB}
- - {0000FF07----00805F9B34FB}
- - {0000FF08----00805F9B34FB}
- - {0000FF09----00805F9B34FB}
- - {0000FF0A----00805F9B34FB}
- - {0000FF0B----00805F9B34FB}
- - {0000FF0C----00805F9B34FB}
- - {0000FF0D----00805F9B34FB}
- - {0000FF0E----00805F9B34FB}
- - {0000FF0F----00805F9B34FB}
- - {0000FEE1----00805F9B34FB}
- - {0000FEDD----00805F9B34FB}
- - {0000FEDE----00805F9B34FB}
- - {0000FEDF----00805F9B34FB}
- - {0000FED0----00805F9B34FB}
- - {0000FED1----00805F9B34FB}
- - {0000FED2----00805F9B34FB}
- - {0000FED3----00805F9B34FB}
- - {0000FEE7----00805F9B34FB}
- - {0000FEC7----00805F9B34FB}
- - {0000FEC8----00805F9B34FB}
- - {0000FEC9----00805F9B34FB}
- IMMEDIATE ALERT - {----00805F9B34FB}
- Alert Level - {00002A06----00805F9B34FB}

View Apple UUID

Android BLE

BTX-110003 - 20:C3:8F:EA:1B:AF

 - BTX- - :C3:8F:EA:1B:AF

- Discovering services -->
- GAP - {----00805F9B34FB}
- Device Name - {00002A00----00805F9B34FB}
- Appearance - {00002A01----00805F9B34FB}
- Peripheral Privacy Flag - {00002A02----00805F9B34FB}
- Reconnection Address - {00002A03----00805F9B34FB}
- Peripheral Preferred Connection Parameters - {00002A04----00805F9B34FB}
- GATT - {----00805F9B34FB}
- Service Changed - {00002A05----00805F9B34FB}
- Key Service - {0000FFE0----00805F9B34FB}
- Key Service Characteristic - {0000FFE1----00805F9B34FB}

Delphi XE8 Bluetooth 蓝牙

搜索蓝牙设备

FBluetoothManager.StartDiscovery(1000);

or

BluetoothLE1.DiscoverDevices(ScanningTime);

本机蓝牙设备名称

FBluetoothManager.CurrentAdapter.AdapterName;

配对

FAdapter.Pair(FDiscoverDevices[ComboboxDevices.ItemIndex])

取消配对

FAdapter.UnPair(FPairedDevices[ComboboxPaired.ItemIndex])

蓝牙通讯

FServerSocket:TBluetoothServerSocket;
FScocket:TBluetoothSocket;

  TBluetoothService = record
Name: string;
UUID: TBluetoothUUID;
end;

FSocket := ldevice.CreateClientSocket(StringToGUID(ServiceGUI), False);

TBluetoothManager.CurrentAdapter
FSocket: TBluetoothSocket;
ToSend: TBytes;
FSocket.Connect;
ToSend := TEncoding.UTF8.GetBytes(Edit1.Text);
FSocket.SendData(ToSend);

BLE 发送数据

ADevice: TBluetoothLEDevice;

AChar: TBluetoothGattCharacteristic;

ADevice.WriteCharacteristic(AChar);

procedure TfrmHeartMonitor.BluetoothLE1EndDiscoverDevices(const Sender: TObject;
const ADeviceList: TBluetoothLEDeviceList);
var
I: Integer;
begin
// log
Memo1.Lines.Add(ADeviceList.Count.ToString + ' devices discovered:');
for I := to ADeviceList.Count - do Memo1.Lines.Add(ADeviceList[I].DeviceName); if BluetoothLE1.DiscoveredDevices.Count > then
begin
FBLEDevice := BluetoothLE1.DiscoveredDevices.First;
lblDevice.Text := HRDeviceName;
if BluetoothLE1.GetServices(FBLEDevice).Count = then
begin
Memo1.Lines.Add('No services found!');
lblBPM.Font.Size := ;
lblBPM.Text := 'No services found!';
end
else
GetServiceAndCharacteristics;
end
else
lblDevice.Text := 'Device not found';
end;

LServices: TBluetoothServiceList;

LDevice: TBluetoothDevice;

LServices := LDevice.GetServices;

LServices[I].Name;

GUIDToString(LServices[I].UUID);

蓝牙功能列表 

LAN Access Using PPP
DialupNetworking
OBEXObjectPush
OBEXFileTransfer
Cordless Telephony
Audio Source
Audio Sink
AV Remote Control Target
Advanced Audio Distribution
AV Remote Control
Headset Audio Gateway
WAP
WAP Client
Personal Area Network User (PANU)
Network Access Point (NAP)
Group Ad-hoc Network (GN)
Handsfree
Handsfree Audio Gateway
SIM Access
Phonebook Access - PCE
Phonebook Access - PSE
Phonebook Access
Headset headset
Message Access Server
Message Notification Server
Message Access Profile
Generic Networking
Generic Audio

TBluetoothLE的更多相关文章

  1. TBluetoothLE.OnDisconnectDevice

    自己作为广播方,连接我的设备断开收到的事件. TBluetoothLE.OnDisconnectDevice TBluetoothLEDevice BluetoothLE1->Discovere ...

  2. delphi 蓝牙 TBluetoothLE

    delphi 蓝牙 TBluetoothLE.TBluetoothLEManager BLE http://docwiki.embarcadero.com/RADStudio/Seattle/en/U ...

  3. RAD Studio 10 自带Demo代码汇总说明

    大家好,好多朋友来信咨询Delphi和C++Builder的移动开发.DataSnap架构等问题,希望能有Demo代码学习.其实Delphi和C++Builder本身自带有很多示例代码,已经覆盖了大部 ...

  4. delphi 演示数据路径

    链接里默认的--------------------------- Error --------------------------- I/O error for file "C:\Prog ...

  5. delphi BLE 学习

    TBluetoothLE 控件 TBluetoothLE.FManager: TBluetoothLEManager; class constructor TBluetoothLEManager.Cr ...

  6. Delphi IOS 蓝牙锁屏后台运行

    Delphi IOS 后台运行 同样的程序,编译成android,锁屏后继续运行正常,蓝牙通讯正常,但在IOS下锁屏后程序的蓝牙就中断通讯了? IOS的机制就是这样,锁屏就关闭了. 音乐播放器是怎么做 ...

  7. RAD 10 蓝牙

    http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Bluetooth.TBluetoothLEManager.StartDiscov ...

随机推荐

  1. UUID的具体用法

    String deleteUuid = UUID.randomUUID().toString(); java.util 类 UUID java.lang.Object java.util.UUID 所 ...

  2. Codeforces Round #209 (Div. 2)C

    刷了一页的WA  ..终于发现了 哪里错了 快速幂模板里一个变量t居然开得long  ... 虽然代码写的丑了点 但是是对的 那个该死的long 啊.. #include <iostream&g ...

  3. 【Todo】深入PHP内核系列

    看到一个<深入PHP内核>系列,Todo: http://www.csdn.net/article/2014-09-15/2821685-exploring-of-the-php [问底] ...

  4. C#操作文件

    c# 操作txt文件 # 操作txt文件 c#创建文本 private const string FILE_NAME = "ErroLog.txt"; public static ...

  5. WebForm页面生命周期及asp.net运行机制

    1.先上几张原理图着重理解: 现在针对第四副图原理进行解析: 流程: 1.浏览器发送请求 2.服务器软件(IIS)接收,它最终的目的就是为了向客户输出它请求的动态页面生成的html代码. 3.服务器不 ...

  6. gcc g++ 参数介绍

    C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源 ...

  7. NBUT 1122 Shameimaru's Candid Camera(水)

    题意: 给n*m个格子,初始时每个格子中有个数值为0,部分格子中含有炸弹,每个炸弹爆炸可以将周围的8个非炸弹格子中的数值加1,求全部炸弹炸完后那些非0且非炸弹格子中的数是多少. 思路: 另开一个矩阵, ...

  8. linux下系统启动时,几个配置文件 /etc/profile、~/.bash_profile 等几个文件的执行过程,先后顺序

    1. 在登录Linux时要执行文件的过程如下: 在刚登录Linux时, 首先启动 /etc/profile 文件, 然后再启动用户目录下的 ~/.bash_profile. ~/.bash_login ...

  9. Android下Fragment的动画切换效果

    效果图如下: 源码链接   :    请戳这里

  10. activity_main.xml与fragment_main.xml

    见: http://blog.sina.com.cn/s/blog_3e28c8a50101fqvw.html http://blog.sina.com.cn/s/blog_3e28c8a50101f ...