ios蓝牙

Windows 8.1 低功耗蓝牙开发

限于喜欢 提交于 2020-03-17 08:00:10
1. 概述 在蓝牙4.0发布以前,给大家的直观印象就是蓝牙耳机,它就是用来满足短距离内中等带宽的音频通信需求。然而蓝牙4.0发布之后,用途就大不一样了,特别是现在物联网和可穿戴之风盛行的年代,很多小玩意都使用了它,如心率计、手环、钥匙扣等等物件,最终它能够和用户的手机、Pad以及PC等设备连接,实现五花八门的功能。为什么蓝牙4.0的用途广泛了呢?首先归功于低功耗,运行Bluetooth Low Energy的设备,一节纽扣电池可以支持其半年的时间;其次是低成本,如TI公司的CC2540蓝牙SoC售价是1美元。自iOS和Android支持蓝牙4.0 BLE以后,在今年4月份微软的BUILD 2014大会上,终于官方宣布在Windows 8.1和Windows Phone 8.1中支持蓝牙4.0 BLE,值得注意的是,目前为止,Windows 8.1 只支持GATT Client模式,而不支持GATT Server模式。下面我们就一起来了解一下如何在Windows 8.1平台上开发蓝牙 4.0 BLE的应用。 2. 设备 首先是配有蓝牙4.0的Windows 8.1系统的PC或者平板,以Surface Pro 2为例,可以打开“设备管理器”->蓝牙,查看下面的列表,如果里面有“Microsoft Bluetooth LE 枚举器”的话,如下图1所示,就说明是支持蓝牙4.0 LE的

蓝牙功能

偶尔善良 提交于 2020-03-03 15:29:54
蓝牙功能 作为蓝牙中心,连接外设 一般性的步骤是先扫描设备,然后根据蓝牙设备的名称等信息找到需要连接的设备,进行连接 然后获取设备的服务,可以订阅对应的服务,可以对设备进行写入 // // ViewController.m // BlueTooth // // Created by JackXu on 15/6/9. // Copyright (c) 2015年 BFMobile. All rights reserved. // #import "ViewController.h" #define MyDeviceName @"HMSoft" @interface ViewController () @property (nonatomic, strong) CBCentralManager *centralMgr; @property (nonatomic, strong) CBPeripheral *discoveredPeripheral; @property (nonatomic, strong) CBCharacteristic *writeCharacteristic; @property (nonatomic,strong) CBCharacteristic *testCharacteristic; @property (weak, nonatomic)

扫盲篇之您的手机如何与蓝牙Mesh节点通信

末鹿安然 提交于 2020-02-22 13:58:57
概述 与Zigbee、Thread等其他MESH组网技术相比,蓝牙Mesh能够在不需要额外硬件成本的前提下实现手机与蓝牙Mesh节点的通信,无疑是一个巨大的优势,因此本文将着重讲解手机是如何与蓝牙Mesh设备通信的,希望给读者以清晰的理解。 手机软硬件 手机软硬件的设计问题决定了蓝牙Mesh节点与手机通讯的方式,这是问题的出发点,因此本文将从手机的软硬件讲起,一步步洞悉其全貌。 硬件 现在的智能手机,不管是苹果或其他众多安卓厂家,蓝牙无疑都是手机标配,在笔者书写本文时,蓝牙已经演变到5·2版本,当然受限于整个供应链的问题,手机上携带的蓝牙版本目前还没有到最新版本,目前市场上蓝牙版本的分布以4-2和5-0为主,而蓝牙Mesh所要求的是蓝牙版本在4-0及其以上即可,因此,读者不必担心手机的硬件约束问题。另外,需要科普的是,从蓝牙4-0开始,蓝牙实际开始走两条路线:传统路线(Classic BT)也就是所谓的经典蓝牙,这种蓝牙通常注重于数据的高速传输,例如:蓝牙耳机,蓝牙音响等,第二条路线(Low Energy)低功耗蓝牙,该类型的蓝牙注重于功耗的低耗,例如:智能手环,智能锁等。相对于手机来说,一般都是集成这两类,我们称之为双模蓝牙。对于蓝牙音响一般都是单纯的经典蓝牙以及智能手环一般都是单纯的低功耗蓝牙,我们将这些分类为单模蓝牙

小程序 wx.onBluetoothDeviceFound 安卓机第一次可以连接蓝牙设备,第二次搜索不到问题

邮差的信 提交于 2020-01-28 07:52:20
问题: wx.onBluetoothDeviceFound 安卓机第一次可以连接蓝牙设备,第二次搜索不到问题 原因: wx.onBluetoothDeviceFound这个方法只能找到新的蓝牙设备,之前连接过的在部分安卓机型上,不算做新的蓝牙设备,因此重新连接搜索不到 解决办法: 方法① 关闭蓝牙连接,也要关闭蓝牙设备,否则安卓下再次进入会搜索不到设备,除非关闭小程序进程再进才可以,IOS不受影响 wx.closeBLEConnection({ deviceId: 连接的deviceId, success(res) { }, fail(res) { } })  wx.closeBluetoothAdapter({ success(res){ }, fail(res){ } }) 方法② 调用 wx.getBluetoothDevices 这个方法,查找已经添加过的蓝牙设备 官网文档 wx.getBluetoothDevices({ success: function(res) { res.devices.forEach(device => { console.log("蓝牙名:" + device.name) if (device.name == that.data.blueName || device.localName == that.data.blueName) { that

iOS蓝牙4.0开发例子

大憨熊 提交于 2019-12-21 15:04:50
本文转载自: https://www.cnblogs.com/visen-0/p/4013119.html 作者:visen-0 转载请注明该声明。 1建立中心角色 #import <CoreBluetooth/CoreBluetooth.h> CBCentralManager *manager; manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; 2扫描外设(discover) [manager scanForPeripheralsWithServices:nil options:options]; 3连接外设(connect) - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { if([peripheral.name isEqualToString:BLE_SERVICE_NAME]){ [self connect:peripheral]; } s); } -(BOOL)connect:

基于物联网平台开发手机混合 App

三世轮回 提交于 2019-12-05 23:44:01
摘要: 本节内容简单地介绍了如何结合现有的物联网平台去开发一个手机应用程序,在上面展示数据、控制设备,并且还介绍了怎样用蓝牙去和设备通信。 手机应用与Web应用开发有很多的相似之处,它们都是调用一些接口,然后渲染出页面。 原生应用。原生应用是指专为特定操作系统开发的应用。这些应用可以直接访问手机的所有功能,如摄像头、蓝牙、WiFi等。这些应用通常速度更快、性能更好。由于其直接访问系统的API,因此性能上与混合应用相比会更好。但是这里有一个问题—需要支持开发的设备太多,开发成本由此升了上去。 Web应用。Web应用是指运行于浏览器上的应用。Web应用就不存在开发成本高的问题,一次开发就可以在桌面、移动浏览器上运行。然而,Web应用对网速的要求比较高,并且与原生应用相比,用户体验不好。尽管HTML 5可以解决一些问题,但是这些问题还是很明显。 混合应用。混合应用是原生应用和Web应用的结合体。从技术的角度来说,混合应用就是调用浏览器,即WebView,来运行Web代码。而它不仅仅是Web应用的离线版,它还可以通过一些框架,如Cordova,直接调用系统的API。在一些框架中,它甚至可以用封装系统的UI组件,以Web常用的形式来提供API。而在混合应用框架中,可能并没有包含所有的功能,这时候就需要自己去实现。 选择哪种应用来作为用户界面,应该取决于是否有充足的时间、精力和人员

iOS——蓝牙开发

与世无争的帅哥 提交于 2019-12-05 02:40:33
一、理论概念: 1.当前ios中开发蓝牙所运用的系统库是<CoreBluetooth/CoreBluetooth.h>。 2.蓝牙外设必须为4.0及以上(2.0需要MFI认证),否则无法开发,蓝牙4.0设备因为低耗电,所以也叫做BLE。 3.CoreBluetooth框架的核心其实是两个东西,peripheral和central, 可以理解成外设和中心,就是你的苹果手机就是中心,外部蓝牙称为外设。 4.服务和特征(service and characteristic):简而言之,外部蓝牙中它有若干个服务service(服务你可以理解为蓝牙所拥有的能力),而每个服务service下拥有若干个特征characteristic(特征你可以理解为解释这个服务的属性)。 5.Descriptor(描述)用来描述characteristic变量的属性。例如,一个descriptor可以规定一个可读的描述,或者一个characteristic变量可接受的范围,或者一个characteristic变量特定的单位。 6.我们使用的蓝牙硬件模块是在淘宝上买的, 大概十多元一个, ios大概每次可以接受90个字节, 安卓大概每次可以接收20个字节, 具体数字可能会浮动, 应该与蓝牙模块有关。 二、蓝牙连接的主要步骤 a、创建一个CBCentralManager实例来进行蓝牙管理; self

简单链接Simplelink 传感器标签SensorTag

蓝咒 提交于 2019-12-04 17:39:52
传感器标签现在支持 iBeacon技术 为了让你的传感器标签升级到与iBeancon技术兼容,你需要和苹果公司签约一个iBeacon许可,然后你可以请求访问软件,通过点击这里 http://www.ti.com/tool/sensortag-sw 一旦你签署了iBeancon许可你可以将传感器标签升级到最新的iBeancon,可以使用火线来测试并用iBeacon开发 怎么做升级和配置iBeacon,根据以下链接 http://processors.wiki.ti.com/index.php/SensorTag_with_iBeacon 蓝牙智能是一个新的标准,可以允许蓝牙设备在一个电池上运行数年。根据IMS的研究,蓝牙智能配件市场是增长最快的移动手机配件市场在未来几年里。这项新技术集成了新的低能耗传感器,许多移动手机应用开发者为移动手机应用开发了没有限制的机会。 传感器标签可以将蓝牙应用开发的设计时间从数月缩短至数小时,该工具删除了对 对那些想利用数量在递增的低能耗智能手机和平板的开发者 的限制。这是第一个 解决无线传感器应用 的蓝牙低能耗开发工具,是对智能手机应用开发者的唯一开发工具。 蓝牙传感器标签已经证明了蓝牙的低能耗能力(aka蓝牙4.0和蓝牙智能) * 不需要嵌入式软件设计知识 * 不需要嵌入式编译知识 * 包括6个低能耗MEMS(微电子机械系统

微信小程序连接蓝牙电子秤

你离开我真会死。 提交于 2019-12-04 11:52:47
前情:在微信小程序中连接蓝牙电子计重桌秤,(电子秤品牌:坤宏),直接通过蓝牙获取当前称重的重量数据,然后显示在界面上。 ps:记录的时候,还在开发阶段,得到了数据,数据有会实时变化,但是数据和真实称重对不上, ⚠️注意 此次,只涉及读取数据,没有写入数据,具体 API 查看小程序官方文档 确保手机蓝牙已经打开,并且可以搜索到该电子秤的蓝牙设备,android 可以搜到,ios 搜不到 微信小程序中搜索到的蓝牙设备很多,deviceId 在 android 上显示为蓝牙设备主服务的 mac 地址,在 ios 上显示为蓝牙设备主服务的 uuid 最终得到的结果是 ArrayBuffer 型数据,需要先转为16进制字符串,再转为10进制数据 (1)初始化 初始化蓝牙模块 --- wx.openBluetoothAdapter // 定义数据 data: { devices: [], // 搜索到的蓝牙设备 deviceId 数组 deviceId: '', // 目标蓝牙设备 deviceId services: [] // 设备服务列表 serviceId 数组 serviceId: '', characteristics: [] // 特征值列表 characteristicId: '' // 选择某一个特征值 value: '' // 16 进制数据值 } // 蓝牙 API

iOS 作为蓝牙外设广播信息

匿名 (未验证) 提交于 2019-12-02 23:57:01
苹果蓝牙后台的限制,原本广播会有两个段分别是localName和serviceUUID这两块,但现在后台广播时,是不发送在这两段的 手机app可以作为一个蓝牙外设端来模拟外设硬件,但广播包里的数据只能包含localName和serviceUUID,相对于外设硬件来说还是有一些不足之处。 一个128位的蓝牙UUID来标示 32个 x 是 0-9 或 a-f 范围内的一个十六进制的数字(0x00),X是字符串格式 把数据按uuid的格式加进去 self.peripheralManager startAdvertising:@{CBAdvertisementDataServiceUUIDsKey:serviceUUIDs,CBAdvertisementDataNameKey:localName}]; 对应的值是数组 key: kCBAdvDataIsConnectable, value: 1 key: kCBAdvDataLocalName, value: SimpleBLEPeripheral key: kCBAdvDataServiceUUIDs // 数据就在这里 uuid(0): FF F0 key: kCBAdvDataTxPowerLevel, value: 0 Manufacturer Specific Data NSArray *keys =