1. 前言 在linux平台下,bluez是一个很不错的软件,提供了很多基于命令行的测试工具,如hciconfig.hcitool.hcidump.bluetoothctl等.利用这些工具,我们可以方便的测试.demo各种蓝牙功能.例如,在“玩转BLE(1)_Eddystone beacon”中,我们利用hcitool命令,演示了将手机变成一个Beacon设备的神奇效果. Beacon的演示,从本质上看,是BLE Advertising(广播)功能的测试和验证.自然而然的,我们会好奇:怎么接收这…
1. 前言 在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了): 物联网中的IOT设备有两个主要特点: 1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置.控制等功能). 2)数量和种类繁多(消费者面对的可是数量众多的不同厂家.不同类型的设备). 基于这两个特点,手机等终端设备一般通过APP(或APK)对IOT设备进行控制,不同厂家的不同设备,通常需要不同的APP/APK.于是出现了这样的结果: 如果你家里有一个小米yeelight的床头灯,你需要安装一个yeeli…
背景 个人开发过一种BLE设备有这样一种需求:当设备处于状态A时,广播设备名称A:处于状态B时,广播设备名称B. 问题 我们发现,当Android在进行Ble扫描的时候,扫描回调函数onScanResult中获取的设备名称并未随设备实时改变. 但是当使用nrfConnect进行扫描时,却发现设备广播名称确实是实时改变的. 原因 我们使用如下代码获取BLE设备名称,然而此时device.getName()中的名称是系统缓存的数据,而非实时的广播数据,要想获取实时的设备名称,必须自行解码实时广播数据…
从上一篇GATT Profile 简介中提到过,BLE 设备工作的第一步就是向外广播数据.广播数据中带有设备相关的信息.本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析. 广播模式 BLE 中有两种角色 Central 和 Peripheral ,也就是中心设备和外围设备.中心设备可以主动连接外围设备,外围设备发送广播或者被中心设备连接.外围通过广播被中心设备发现,广播中带有外围设备自身的相关信息. 广播包有两种: 广播包 (Advertising Data)和 响应包 (Scan…
本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 近期穿戴设备发展得非常火.把相关技术也带旺了,当中一项是BLE(Bluetooth Low Energy).BLE是蓝牙4.0的核心Profile,主打功能是高速搜索,高速连接.超低功耗保持连接和数据传输,弱点是数据传输速率低,因为BLE的低功耗特点,因此普遍用于穿戴设备.Android 4.3才開始支持BLE API,所以请各位客官把本文代码执行在蓝牙4.0和Android 4.3及其以上的系统,另外本文…
前言: 报文由数据字节组成同时是按比特传输的,这就免不了牵涉到字节序的问题. 对于各个字节的传输,总是从最低位开始传输.如0x80是按00000001发送的,0x01是按10000000发送的. 同时大多数字节域又是从低字节开始发送的.如0x010203发送序列为110000000100000010000000 之所以说大多数,是因为并不是所有的数据都会从低字节发送从后面的抓取的广播报文中也能看不来. 另外由于抓包软件可能并不一定能完全知道哪些数据时从低字节开始发的,抓取的广播数据可能有一些需要…
BLE 设备工作的第一步就是向外广播数据.广播数据中带有设备相关的信息.本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析. 1. 广播模式 BLE 中有两种角色 Central 和 Peripheral ,也就是中心设备和外围设备.中心设备可以主动连接外围设备,外围设备发送广播或者被中心设备连接.外围通过广播被中心设备发现,广播中带有外围设备自身的相关信息. 广播包有两种: 广播包 (Advertising Data)和 响应包 (Scan Response),其中广播包是每个设备必…
1.没有exe安装程序 2.区分大小写 3.一切皆文件 4.文件后缀不是那么重要,只是为了好识别 -------------------------------------------------- 3-1:安装虚拟机 [VirtualBox 5.1][vmware] VirtualBox (5.1.24):下载地址 https://www.virtualbox.org/wiki/Download_Old_Builds_5_1 Xshell 下载: http://dlsw.baidu.com/s…
学习文件数据处理的时候了解到有pickle模块,查找官方文档学习了一些需要用到的pickle内容. 封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节流转化为Python数据对象,不要从不收信任的数据源中拆封数据.可以封装和拆封几乎任何Python数据对象,主要包括: None , True,False 整数,浮点数,复数 字符串,字节,ByteArray对象 元组,列表,集合,包含可封装对象的字典 在一个模块的顶层定义的函数 在一个模块的顶层定…
/** * 代码清单中使用 ProcessEngines类加载默认的流程配置文件(activiti.cfg.xml),再获取各个服务组件的实例. * RepositoryService主要用于管理流程的资源, RuntimeService主要用于流程运行时的流程管理,TaskService主要用于管理流程任务. * 最后, HistoricProcessInstance会将工作的流程历史记录下来. * * activiti.cfg.xml * |--ProcessEngineConfigurat…