CC2540 USB DONGLE 使用 BTool 调试BLE 说明
一、Btool软件界面介绍
首先您要将USBDONGLE插入电脑的USB口,然后打开双击打开Btool软件,打开后如下图所示:
在安装驱动的教程中,我们已经记住了我们的USB DONGLE的串口号,在这里请您选择正确的串口号,其它默认就好,点击OK。会出现下面的界面:
下面我们针对这个初始化的界面做一些说明讲解:
二、扫描设备使用介绍
默认Btool打开后,只是对USB DONGLE进行复位初始化操作,并不会跟Monitor一样自动去扫描周围空中从设备,所以需要我们手动去启动扫描!
A、点击“Discovery”按钮,开始启动USBDONGLE扫描,您会看到,如果扫描到空中设备后,那么设备信息就会以蓝牙的协议标准返回上来,Btool做的相当完美,协议都帮我们做了解析,我们可以非常清晰的看到每次交互的数据类型和结果。
扫描的时间USBDONGLE默认为10s,扫描完毕后,Btool会报告扫描的结果,数据已经被解析,我们可以很清楚的看懂:
B、该扫描结果为,NumDevs为扫描到的设备数,Addr为设备的MAC地址,如果有多个设备被扫描到,那么都会一一列出来。
C、除了在日志中会显示出来,在“Link Control”(连接控制)控制框内,Slave BDA里面,会自动的添加扫描到的BLE从机地址,这样是为了方便我们在连接的时候方便选择,因为蓝牙的连接都是靠mac地址来实现的!
三、连接设备使用介绍
A、刚才我们搜索到了一个设备,Btool已经将这个设备记录下来了,接下来我们只需要选中这个设备,并进行连接就可以了,如下图所示
选择好后,我们直接点击“Establish”,Btool即可自动进行连接。
从日志框内我们可以看到连接过程中所产生的数据收发交互。
四、断开连接
1、断开连接很简单,直接点击 Teminate 即可断开当前连接。
2、如果有多个设备,只需要将需要断开的设备的connection Handle值填入即可,然后同样点击 Teminate 即可,连接会立刻被断开。
五、查找Handle值 并利用Handle值去读取特定服务的特征值数据
蓝牙开发工程师都知道,我们的蓝牙服务列表就好比一个很大的数组,每个数据字段都有确定的数组位置,在BLE中我们用Handle值来表示,Handle值您就可以理解为是数组的位置。
我们每个服务不管是主服务还是子服务都有UUID值,对于我们,UUID的值是唯一的,我们经常会根据我们的需要来改变我们的服务列表的服务数量、类型和数值的大小,所以如果我们靠Handle去牢记每个数据段的位置,那将是很复杂的过程,而且也是不现实的,不可能每次我们改变了服务列表就要把买个Handle去算一次,所以BLE协议为我们想的很全面,我们直接利用UUID值去在服务列表中搜索这个Handle值,靠程序去自己判断这个是到底是多少,这样就变得非常方便可行了,而且不会出错。
可能您要问IPHONE手机是直接利用UUID进行数据读写操作的,确实是这样,IOS平台的程序一直都是很简单的,其实他也是靠Handle值去实现读写数据的,只是苹果为我们做好了这个工作,让我们节省工作了。
做过BLE主机的朋友都会知道,每次连接上以后都必须利用已知的UUID值去确定Handle值,否则我们将无法准确的与BLE从机去数据交互。
上面的文字我认为是非常重要的,所以在这里就多说了几句,下面我们步入正题!
A、点击分栏中的“Read/Write”标签,进入到读写操作指令区域,
B、接下来我们就要通过UUID来查找我们需要的handle值了,首先选择读取操作的类型,我们选择“Discover Characteristic UUID”通过UUID来查找特征值的Handle,我们所实验的设备里有一个服务的UUID为0XFFF1,我们就查找他的特征值的handle值,按照如下选择好,并填写好UUID值:
C、随后我们电机 Read 按钮,这样Btool会控制USBDONGLE来读取连接设备的该uuid的handle值,读取成功后,如下显示:
D、读取的handle值为0X0025,我们测试版中,0XFFF1这个子服务里面的数据位20个字节,为了验证我们查找的handle是否正确,我们利用handle值去读取这个服务里面的数据,看看是否是20个字节。
按照下图选择好,并填写0XFFF1服务0X0025 handle值,点击Read按钮,结果如下图:
正确的读取了该服务下面的20个字节的特征值,从而证明我上述操作是完全正确的。
六、对应的特征值进行写操作
写操作的过程与读取特征值是一样的,只需要填写对应的Handle值,然后将数据写入即可实现。
A、咱们还是以UUID为 0XFFF1的子服务为例(该服务属性为读写),我们对其写入01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0000 00,
按照下图写入Handle值和数据:
点击Write 即可执行写入操作,Status 中会显示写入的结果,显示为“Success”,成功。
B、我们继续执行读取操作,观察下我们写入是否成功,根据(五D)中的操作执行,显示如下:
读取与写入的数据一致,说明我们已经成功进行了写操作。
小结
通过上述教程,我估计您已经掌握了Btool最重要的应用,通过与Motinor对比,我们将Monitor比作万用表,将Btool比如示波器; Monitor是用来宏观的显示我们蓝牙设备得具体信息,而Btool则是协助我们去分析蓝牙内部是怎么进行数据读写和交互的,所以二者是我们进行蓝牙开发最重要的软件,大家一定要熟悉掌握,利用好会事半功倍!祝您成功!
CC2540 USB DONGLE 使用 BTool 调试BLE 说明的更多相关文章
- CC2540 USB Dongle 使用说明
CC2540做的USB Dongle可以烧写不同的固件从而做很多PC端的应用,下面我们来介绍下下载固件的方法和一些典型应用: 下载接口: 3V3引脚连接到CC Debugger的Target Volt ...
- PIC24FJ64GB002 with bluetooth USB dongle
PIC24FJ64GB002 with bluetooth USB dongle I will explain my project (how to control a bluetooth USB d ...
- CC254x(cc2540/cc2541)的微信AirSync调试笔记
一.前言 本尊自诩为IOT小能手,一直没涉足蓝牙实在说不过去.刚好上个月底的时候计划做个BLE设备,这阵子利用业余时间自学了BLE协议栈,了解了GATT,磕磕绊绊完成CC254x(cc2540/cc2 ...
- [置顶] 自娱自乐6之Linux gadget驱动5(自编gadget驱动,包涵与之通讯的主机usb驱动,已调试通过)
这个代码调试,你首先要保证你的udc驱动没用问题,这个有些矛盾,应为我本来要用gadget驱动来调试udc驱动,结果反过来了. 这是在zero基础改的,大概的改动 1. 去掉loop. 2. sink ...
- Cordova开发App使用USB进行真机调试
在使用cordova开发app时,不像浏览器中可以直接使用浏览器的开发者工具进行调试.为了看到app的显示效果, 一种是使用模拟器进行展示,一种是使用真机进行展示. 模拟器:可以使用Android s ...
- linux usb信息查看与调试
lsusb cat /sys/kernel/debug/usb/devices T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 M ...
- BLE Device Monitor
发现 这东西基本是新工具,依赖CC2540 USB Dongle串口来运作 它能做很多事情,扫描设备,研究设备 经验 监控设备躲在这里 官方获得 跑道CC2541页面里去 http://www.ti. ...
- 蓝牙学习笔记三(Android Debug)
android 端可以通过两种方式去Debug: 一.在手机的设置功能里,开发者模式 Enable,如下图: http://blog.bluetooth.com/debugging-bluetoo ...
- [iOS]在xcode的iOS虚拟机中对BLE(蓝牙4.0)进行调试
本文档的主要内容可参考苹果官方资料: http://developer.apple.com/library/ios/#technotes/tn2295/_index.html 1. 买一个CSR蓝牙4 ...
随机推荐
- python 添加类属性
类属性必须赋值. 创建类属性 类是模板,而实例则是根据类创建的对象. 绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有 ...
- Xamarin Anroid开发教程之下载安装Xamarin
Xamarin Anroid开发教程之下载安装Xamarin Xamarin在过去安装时都会检查系统中是否安装了前面所提供的内容.而后来,Xamarin安装时只提供安装步骤,其它内容都需要读者自己下载 ...
- HDU3247 Resource Archiver(AC自动机+BFS+DP)
题目,求最短的包含所有n个DNA片段且不包含任何一个病毒片段的序列. 容易用所有DNA片段和病毒片段建一个AC自动机,构造fail时处理一下各个结点后缀是DNA或者病毒的情况,然后dp[S][u]表示 ...
- POJ3687 Labeling Balls(拓扑排序\贪心+Floyd)
题目是要给n个重量1到n的球编号,有一些约束条件:编号A的球重量要小于编号B的重量,最后就是要输出字典序最小的从1到n各个编号的球的重量. 正向拓扑排序,取最小编号给最小编号是不行的,不举出个例子真的 ...
- HDU3341 Lost's revenge(AC自动机+DP)
题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...
- ural 1219. Symbolic Sequence
1219. Symbolic Sequence Time limit: 1.0 secondMemory limit: 64 MB Your program is to output a sequen ...
- BZOJ4377 : [POI2015]Kurs szybkiego czytania
因为$a$与$n$互质,所以对于$0$到$n-1$里每个$i$,$ai\bmod n$的值互不相同. 设匹配成功的起点为$i$,那么可以得到$3m$段$ai\bmod n$的值不能取的禁区,每段都是连 ...
- BZOJ4134 : ljw和lzr的hack比赛
设$f[x]$为$x$子树里的子游戏的sg值,$h[x]$为$x$所有儿子节点$f[x]$的异或和,则: $f[x]=mex(y到x路径上所有点的h的异或和\ xor\ y到x路径上所有点的f的异或和 ...
- objective-c 条件运算符
条件运算符 val1!=0 ? val1:val2 等价于 val1?val2
- TYVJ P1068 STR Label:KMP匹配 不懂
描述 给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度.给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个.N,M,K<=200000 输入格式 第一行三个数 ...