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. 初步窥探Git

    码农之路恒久远,学习向上是真谛啊!在学习的过程中,相信大家或多或少都接触到Git这个东东.它到底是什么呢,有什么作用呢,为什么它会那么火呢?带着这些一连串的疑问,决心去揭开它的庐山真面目. 在软件开发 ...

  2. Machine Learning for hackers读书笔记(四)排序:智能收件箱

    #数据集来源http://spamassassin.apache.org/publiccorpus/ #加载数据 library(tm)library(ggplot2)data.path<-'F ...

  3. 51nod1354 选数字

    01背包tle. 解题报告(by System Message) 类似于背包的DP,以乘积为状态.先把等选数字里面不是K约数的去掉.然后找出K的约数,进行离散化.然后dp[i][j]表示前i个数字乘积 ...

  4. UVa 673 Parentheses Balance【栈】

    题意:输入一个包含"()"和"[]"的序列,判断是否合法 用栈来模拟,遇到"(",“[”就入栈,遇到')',']'就取出栈顶元素看是否匹配, ...

  5. SQL 数据库表标识列初始化 DBCC

    把ArimaIndexForecastModel这张表的标识列重置为0,前提是这张表执行过删除操作 示例:  dbcc checkident('ArimaIndexForecastModel',res ...

  6. HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)

    题意: 给一个所有你可能想得到的奇葩无向图,要求给每条边定向,使得每个点的入度与出度之差不超过1.输出1表示定向往右,输出0表示定向往左. 思路: 网络流也是可以解决的!!应该挺简单理解的.但是由于复 ...

  7. LSTM网络(Long Short-Term Memory )

    本文基于前两篇 1. 多层感知机及其BP算法(Multi-Layer Perceptron) 与 2. 递归神经网络(Recurrent Neural Networks,RNN) RNN 有一个致命的 ...

  8. shell script入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  9. svn 安装与设置

    Subversion可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用.一定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作. 运行Subversion服务器需要首先要建立一个版本 ...

  10. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.3.Oracle 集群节点间连通失败

    1.检查节点连通性的错误 [grid@linuxrac1 grid]$ ./runcluvfy.sh stage -post hwos -n linuxrac1,linuxrac2 -verbose ...