蓝牙4.0 BLE

读了N多文档,其中推荐的有:

Webee的《蓝牙4.0是战演练》

Ghostyu的 《BLE权威教程》

1:透穿实现:

利用TI的BLE包里的工程直接烧

上位设备用 central,下位设备用peripheral工程

做以下处理:

central 的NPI初始化时添加uart CB,并在串口回调函数中 直接添加write char函数写进特征值(实现上位从串口接收并通过蓝牙发送), 使能特征值通知,并在通知处理事件中将数据从串口发送(实现上位的从蓝牙接受并从串口发送)

peripheral在charchangeCB中添加串口发送(实现从蓝牙接受,从串口发送),在注册profile时注意注册成可通知类型,并在串口回调函数中setchar来设定特征值(实现从串口接受从蓝牙发送)

以上两个特征值可以自己注册。

2:利用cenral或者peripheral等协议栈模板工程定制自己的工程

(1)定义自己的函数(init 及 process)定义函数对应的事件 16位最多16种事件(事件定义位置及形式 参考peripheral.c中 Simple BLE  peripheral Task Events部分)

定义好之后 在协议栈init task部分添加自己函数的init,然后把process函数放在taskarr[]函数数组最后(参见SimpleBLEeventProcss位置)。

(2)定义好的task events应该与process中的switch选项对应

(3)启动事件,可以同样在SimpleTLEperipheral_init()函数的最后用osal_set_events(函数ID,事件)启动事件。

(要实现周期运行,可在events_process中调用延时osal_set_events());

最后最重要的一点是:根据自己工程需求,配置连接方式,上电advertising比较方便。

PS: 如果有新的硬件初始化需求,可以在HL层的common文件中 halDriveInit()函数中添加,该函数会被main()调用。

GAP及GATT提供的API简介  见 BLE协议栈中Document中的HTML格式文档。

PSS:event用于同一任务传递命令,而message用于不同任务之间命令传递。

event见上2,message自定义方法如下:

Comdef.h中给出了用户自定义message的宏范围,根据其范围可以在app中自定义message

定义message后,在需要用的地方创建消息结构体:msgpkt = (keyChange_t *)osal_msg_allocate(sizeof(keyChang_t));

msgkpt->hdr.event = KEY_CHANG;

msgpkt->state = state;

msgpkt->keys = keys;

然后发送即可:osal_msg_send(registeredKeystaskid,uint8 * msgkpt);

最后在接受消息的函数

MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(SampleApp);

while( MSGpkt

{

switch( MSGpkt->har.evet )

case: KEY_CHANG; ````````break;

case:USER_MSG;```````````break;

})

通用工程模板及通用OSAL模板后续补充。

蓝牙4.0 BLE,布布扣,bubuko.com

时间: 2024-12-21 13:06:53

蓝牙4.0 BLE的相关文章

iOS开发 之 可穿戴设备 蓝牙4.0 BLE 开发

1 前言 当前有越来越多的可穿戴设备使用了蓝牙4.0 BLE(Bluetooth Low Energy).对于iOS开发而言,Apple之前专门推出CoreBluetooth的Framework来支持BLE的开发.对于硬件开发有了解的朋友应该知道,在之前使用低版本的蓝牙的设备,要连接到iOS设备上,需要注册MFI,拥有MFI协议才能进行相应的开发.如果大家关注我之前对LEGO EV3的研究,就可以发现,EV3是使用了蓝牙2.1,因此需要MFI协议来进行开发. 本文将一步一步讲解如何使用CoreB

Android项目实战(三十四):蓝牙4.0 BLE 多设备连接

原文:Android项目实战(三十四):蓝牙4.0 BLE 多设备连接 最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据. 查询了很多资料终于实现,现进行总结. -------------------------------------------------------------------------------------------------------------------------------------------------------------

蓝牙4.0 BLE学习笔记

一.知识普及 1.蓝牙4.0分为两个部分: 1)Bluetooth Ready,兼容传统蓝牙的高速部分: 2)Bluetooth Smart,BLE(Bluetooth Low Energy),功耗低,速率低.最大传输速率4~5k字节/s: 2.BLE协议栈: 1)只是一个协议规范,BLE协议栈是该协议的代码实现:蓝牙组织SIG负责制定协议,芯片公司负责实现协议: 2)BLE协议栈是芯片公司预先编好的源码或者库: 3.CC2540/2541,CC254x就是一颗带有蓝牙功能的51单片机,BLE协

Android 蓝牙4.0 BLE

Android ble (Bluetooth Low Energy) 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用. BLE是蓝牙4.0的核心Profile,主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备. 官方demo:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html 官方demo(

蓝牙4.0 BLE与传统蓝牙之间的兼容性

蓝牙分为三种:Bluetooth Smart Ready.Bluetooth Smart(Smart是低功耗蓝牙的标识).以及标准 Bluetooth.根据 Bluetooth SIG的说法,这样是为了要分辨装置间的相容性以及标识各版本的传输频率.基本上来说,Smart Ready适用于任何双模蓝牙 4.0 的电子产品,如 苹果公司iPhone 4S及以后的产品和安装了安卓4.3以上的系统,并且蓝牙芯片支持4.0的手机.而Smart則是应用在心率监视器或计步器等使用扭扣式电池并传输单一咨询的装置

Android 蓝牙4.0 BLE 理解

本文简单结合两篇文章 http://blog.csdn.net/hellogv/article/details/24267685 http://blog.csdn.net/jimoduwu/article/details/21604215 在BLE协议中,有两个角色,周边(Periphery)和中央(Central),一个中央可以同时连接多个周边,但是一个周边某一时刻只能连接一个中央.但是不管是Periphery还是Central都是可以实现 GATT server 和 GATT client去

android蓝牙4.0(BLE)开发之ibeacon初步

此文使用的ibeacon模块是april beacon,至于什么是ibeacon.本文不做解释,具体请自查. 一个april beacon里携带的信息如下 0201061AFF4C0002159069BDB88C11416BAC3F33468C2788A3044B0378C60C09417072696C426561636F6E051250002003020A0000000000000000000000 具体是什么意思呢 02 Number of bytes that follow in firs

蓝牙4.0 BLE入门

在BLE协议中有两个角色,一个是周边(Periphery),另外一个是中央(Central).一个中央可以同时连接多个周边,但一个周边某一时刻只能连接一个中央.但是不管periphery还是central都是可以实现GATT server和GATT client去传输数据,但是无法同时都是. 先来讲一下相关术语和概念: GATT:Generic Attribute Profile,GATT配置文件是一个通用的规范,用于在BLE链路上发送和接收被称为"属性"的数据块.目前所有的BLE应用

蓝牙4.0 BLE 开发

在BLE开发中的一些随记,供大家参考: 凡事皆有状态 低功耗蓝牙背后有个基本的概念:任何事务都有状态.状态可以是任何东西:当前的温度,设备里电池的状态,设备名称或者对测量温度的地点的描述.它通过属性服务器上的属性协议对外公开. 状态不局限与“可读”状态,还包括“可写”状态. 一些状态是可变的,甚至是频繁改变(部分传感器).哟快速实现服务器到客户端的状态传输,就必须支持状态信息的通知功能.通知直接从服务器发送至客户端,无需客户端向服务器执行轮询,这种设计可以支持高效的应用,比如只有当电池出现状况是