在上一篇中,用raspberryPi能够扫描到Ti SensorTag. 但是没有获得更多的数据,并且发现sensor Tag并没有回复scan request. https://blog.csdn.net/feiwatson/article/details/82946621 这里我们利用gatttool来配对. pi@raspberrypi:~ $ gatttool --help Usage: gatttool [OPTION...] Application Options: -i, --ad…
前面几篇分别简单涉及了 raspberryPi上bluez BLE sniffer TI SensorTag https://blog.csdn.net/feiwatson/article/details/81590397 https://blog.csdn.net/feiwatson/article/details/82942416 https://blog.csdn.net/feiwatson/article/details/82945485 那么接下来,可以仔细分析蓝牙的packets r…
硬件 cc2650 SensorTag Connect with App 在手机上安装Ti提供的sensorTag App即可和sensorTag 建立连接. 如下手机截图,…
学习路线 1 蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCAT…
Android 蓝牙学习 学习缘由 上个礼拜公司要开发个简单的五子棋游戏!其中一个需求就是支持蓝牙对战!所以苦逼的我学习蓝牙方面的知识了! 简介 Bluetooth是目前使用最广泛的无线通讯协议,近距离无线通讯的标准.传说瑞典有个国王特别爱吃蓝莓导致自己的牙齿天天都是蓝色的,在他执政期间这位国王非常善于交际,能说会到,和邻国的搞得关系非常好,这个Bluetooth的发明者觉得蓝牙它的作用就是在近距离沟通周围的设备,跟这个国王很类似,于是起名叫蓝牙. 主要针对短距离设备通讯(10米) 无线耳机,无…
之前做一个android版的蓝牙 与血压计通讯的项目,遇到最大的难题就是自动配对. 上网查资料说是用反射createBond()和setPin(),但测试时进行配对还是会出现提示,但配对是成功了 我就开始查找怎么关闭这个蓝牙配对提示框,后面还是伟大的android源码帮助了我. 在源码 BluetoothDevice 类中还有两个隐藏方法 cancelBondProcess()和cancelPairingUserInput() 这两个方法一个是取消配对进程一个是取消用户输入 下面是自动配对的代码…
一 Bluetooth基本概念 蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备.计算机及其终端设备.各种数字数据系统.甚至家用电器采用无线方式联接起来.它的传输距离为10cm-10m,如果增加功率或是加上某些外设便可达到100m的传输距离.它采用2.4GHzISM频段和调频.跳频技术,使用权向纠错编码.ARQ.TDD和基带协议.TDMA每时隙为0.625μs,基带符合速率为1Mb/s.蓝牙支持64kb/s实时语音传输和数据传输,语音编码为CVSD,发射功率分别为1mW.2.5mW和100…
一. 什么是蓝牙(Bluetooth)? 1.1  BuleTooth是目前使用最广泛的无线通信协议 1.2  主要针对短距离设备通讯(10m) 1.3  常用于连接耳机,鼠标和移动通讯设备等. 二. 与蓝牙相关的API 2.1 BluetoothAdapter: 代表了本地的蓝牙适配器 2.2 BluetoothDevice 代表了一个远程的Bluetooth设备 三. 扫描已经配对的蓝牙设备(1) 注:必须部署在真实手机上,模拟器无法实现 首先需要在AndroidManifest.xml 声…
一直想开一个高大上点的博客,觉得博客园不错,便申请了.一直没时间看,都快忘了,无意间登上提示申请到了.便写个东西看看. 正在学习nRF51822的蓝牙开发板,为了做毕设准备.备考中,一直没时间学,但今天是国庆节,觉得得给自己放一天假,所以开始鼓捣之前买的开发板. 昨天晚上才终于找到下载的窍门,但是对于蓝牙协议的下载还没头绪.不过这个可以往后拖一拖,拖到考完试吧.昨天把板子用SWD下载弄会了,今天上午刚刚移植了OLED的驱动和测试,用这个开发板点亮了OLED,不过速度有点慢啊,明显的刷屏感啊. 好…
package cn.madfinger.core; import java.io.IOException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.UUID; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.b…
android 端可以通过两种方式去Debug: 一.在手机的设置功能里,开发者模式 Enable,如下图:   http://blog.bluetooth.com/debugging-bluetooth-with-an-android-app 然后在手机的根目录下有一个名类似叫:btsnoop_hci.log 的日志. 通过工具 Wireshark 查看日志: host对应的是主机, controller对应的是控制器.   Android端查看蓝牙日志: http://www.fte.com…
可以通过以下两点加速蓝牙连接: 1.更新连接参数 interval:连接间隔(connection intervals ),范围在 7.5 毫秒 到 4 秒. latency:连接延迟 ... 还有一些其它参数.   Android API不提供具体的参数值, 只提供了三个常量: CONNECTION_PRIORITY_HIGH CONNECTION_PRIORITY_BALANCED CONNECTION_PRIORITY_LOW_POWER 从Android的源码找到对应的参数: 在发起连接…
L2CAP in protocol 首先看一下L2CAP在Bluetooth protocol architecture diagram中的位置: Features of L2CAP Logical Link Control and Adaptation Protocol (L2CAP) 主要有如下功能: Segmentation L2CAP层接收的frames最长为64KB. 当应用层收发的Frame的长度大于这个限制时.L2CAP层负责包的segmenation. 上层协议multiplex…
主要分析一下蓝牙USB Adapter使用USB接口传输HCI包的实现及过程. 参照上面的Bluetooth core system architecture图, 蓝牙USB Adapter作为Bluetooth controller以USB的物理形式连接到Linux host processor上,通过HCI protocol和Host通信. bluetooth in Linux kernel Linux kernel side主要包括: Bluetooth Core: (net\blueto…
前天在玩OLED时想完成一直想弄得一个东西,就是简单的单片机游戏.因为STM32和nRF51822的内存足够,所以就用缓存数组的方法来显示图像(我也不知道术语是啥,反正就是在内存中建立一个128X64的二维数组,更新显示时将整个数组刷新到屏幕上),而且这两个OLED是串口的(还有一个128X32的OLED,一样串口的,连驱动时序和驱动函数都一样,两个都太小了,还那么贵......),四个IO口就能驱动(两个还是供电的VCC和GND),所以不像之前的那个mini 12864屏幕,它是8位并口的,带…
Frames 由下图可以看出 - SDU由多个I-frames中的Information Payload组成 - 一个I-frames又拆分成多个HCI data payload socket buffers sk_buff, 套接字缓冲区,在linux网络子系统中的各层之间传递数据. 当发送数据包时,网络模块必须建立一个sk_buffer,将传送数据put到sk_buffer,然后将sk_buffer传递到下层.各层在sk_buffer中添加不同的协议头直至到网络设备发送. 当接收数据包时,网…
在上文,https://blog.csdn.net/feiwatson/article/details/81712933中主要理解了在Kernel中USB adapter是如何实现USB设备驱动,以及HCI数据是通过不同的pipes和host通信的. Control pipes are used to transport HCI commands. Interrupt pipes are responsible for carrying HCI events. 这里接着分析Bluetooth C…
PS:最近同学问我蓝牙的事,因此自己也就脑补了一下蓝牙... 学习内容: 1.如何实现蓝牙通信技术...   蓝牙通信其实是手机里很常用的一种通信方式,现在的手机中是必然存在蓝牙的,蓝牙通信也是有一部分优点的,功耗低,安全性比较高,但是缺点想必大家都知道,传输的速率也确实是不快,相比于Wifi通信,确实不值一提...虽然影响范围并不高,但是既然蓝牙存在,那么还是有必要知道蓝牙是如何进行通信的...蓝牙通信有两种方式,最常用的就是使用socket套接字来实现蓝牙通信...   蓝牙通信原理:蓝牙通…
        蓝牙( Bluetooth®):是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网之间的短距离数据 交换(使用2.4-2.485GHz的ISM波段的UHF无线电波).蓝牙设备最多可以同时和7个其它蓝牙设备建立连接,进 行通信,当然并不是每一个蓝牙都可以达到最大值.下面,我们从蓝牙的基本概念开始,一步一步开始了解蓝牙. (尊重劳动成果,转载请注明出处http://blog.csdn.net/qq_25827845/article/details/52997523) 源码下载…
BluetoothConnectActivityReceiver.java:监听蓝牙配对的广播 代码: package com.imte.Broadcast; import com.imte.utils.ClsUtils; import com.itme.ActivityClass.R; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.conten…
Android4.2蓝牙基础架构学习 分类: Jellybean Bluetooth Bluetooth 2013-10-13 23:58 863人阅读 评论(3) 收藏 举报 androidbluedroidjellybean蓝牙应用程序 接下来就要进入到真正的Android4.2蓝牙系统的学习了,Are you ready? 本文不会涉及任何代码,主要对整个Android的蓝牙结构进行一个框架上的分析. Android4.2使用了Bluetooth.apk管理所有蓝牙相关的操作,Bluedr…
前言 在写这篇文章的时候,谷歌刚刚发布了Android Wear ,摩托罗拉也发布了 Moto 360 智能手表.Android Wear的API还是相当基本的,是很好的文档材料,而且还会不断的更新,所以我不打算写一个关于他们的教程(至少现在还没有).有趣的是 Moto 360 支持 Android 4.3及之后的版本.这明显是Bluetooth LE只有在Android 4.3及以后才被支持的原因,这也意味着 Moto 360 支持Bluetooth LE.Bluetooth LE 将不仅是可…
The easiest way to use Bluetooth (BLE )in ios,even bady can use. 简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和mac osx. 为什么使用它? 1:基于原生CoreBluetooth框架封装的轻量级的开源库,可以帮你更简单地使用CoreBluetooth API. 2:CoreBluetooth所有方法都是通过委托完成,代码冗余且顺序凌乱.BabyBluetooth使用block方法,可以重新按照功能和顺序…
首先先了解一下bluez, 以及常用的tools. - hcitool.bluetoothctl等工具,可以进行BLE设备的扫描.连接.配对.广播等操作: - hcitool可以发送HCI command,设置BLE的广播数据: - gatttool可以在GATT层面,完成GATT profile的连接.service attribute的读写等操作: bluez 安装 sudo apt-get install bluez hciconfig 查看蓝牙设备 pi@raspberrypi:~ $…
继上一篇Android系统源代码剖析(一)---Settings 接着来介绍一下设置中某个模块的源代码.本文依然是基于Android4.42源代码进行分析,分析一下蓝牙模块的实现.建议大致看一下关于Settings的剖析. ZERO,蓝牙模块的fragment及其配置 1>,首先由Settings_headers.xml文件能够知道,蓝牙相应的fragment为BluetoothSettings.java,相应的id,icon.title,不再赘述,可自行查看xml文件就可以 <!-- Blu…
出处:qiuyi21.cnblogs.com 1.iPhone开启个人热点 在iPhone中打开蓝牙,然后进入“个人热点”并打开开关,如果提示热点发射方式请选择蓝牙那项,然后停留在“个人热点”界面并且不要锁屏. 2.带蓝牙的电脑上设置 在Windows 10任务栏右下角点击“通知”按钮,然后点击“All settings”(所有设置)打开系统设置,如下图所示: 图1 在设置界面点击“设备”->“蓝牙”,把蓝牙和iPhone配对,iPhone和电脑都要“确定”配对,配对成功后电脑会显示已连接. 同…
因近期项目需求调试了Android蓝牙通讯接口,主要是两个终端作为服务端和客户端的通信,本文将部分重要知识点记录如下. 蓝牙是短距离无线通信,通常分经典蓝牙和低功耗蓝牙(即蓝牙4.0),两类蓝牙协议各层定义上存在很多不同,因此芯片也不一样,但就Android上做应用层开发没什么差别. 蓝牙通信分为配对和数据传输两部分,两部分是独立的,一般来说是点对点,如果要组局域网需要支持LAN协议扩展,没有尝试过. 配对阶段 发现设备方 mBluetoothAdapter = BluetoothAdapter…
最近公司头戴换了一块蓝牙4.0 BLE模块,所以我们Android组要适配 BLE.Android BLE 需要 4.3 以上系统,api 还是非常简单的, 第一步就是扫描, 扫描到设备后就可以连接了,连接成功后在 onServicesDiscovered 中拿到 Service Characteristic Descriptor 就可以了.不过还是遇到了几个小坑第一: setCharacteristicNotification 时 onCharacteristicChanged 中收不到回调…
示例蓝牙: 蓝牙A地址:3014:10:271614 蓝牙B地址:2015:2:120758 //============================================= 步骤: 1.[AT模式]两个蓝牙模块的PIO11接VCC,上电后即进入AT指令模式,都用USB转TTL模块连接到电脑的USB接口. 2.[打开串口调试助手]开启2个串口调试窗口,一个打开蓝牙A的COM口,一个打开蓝牙B的COM口.[默认波特率一般为38400] 3.[恢复A默认设置]串口调试助手A,将蓝牙A恢…
以下是开发中的几个关键步骤: 1,首先开启蓝牙 2,搜索可用设备 3,创建蓝牙socket,获取输入输出流 4,读取和写入数据 5,断开连接关闭蓝牙 下面是一个demo 效果图: SearchDeviceActivity.java package com.hello.project; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import …