首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 蓝牙4.0开发使用(内附 Demo)

蓝牙4.0因为低耗电,所以也叫做低功耗蓝(BLE),它将三种规格集一体,包括传统蓝牙技术、高速技术和低耗能技术。 这篇文章用来介绍BLE 4.0的使用以及相关问题的解决。...二:BLE的两种模式 BLE的两种模式分为CBCentralMannager 中心模式 和CBPeripheralManager 外设模式,在这里主要和大家分享CBCentralMannager 中心模式的开发和使用...订阅特征的通知 7.1 根据特征读取数据 三:BLE开发步骤 在介绍CBCentralMannager 中心模式开发步骤之前,首先需要对项目进行如下配置: #import "ESPFBYBLEHelper.h..." #import @interface ESPFBYBLEHelper ()<CBCentralManagerDelegate,CBPeripheralDelegate...框架 #import 遵守CBCentralManagerDelegate,CBPeripheralDelegate协议 @interface

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

iOS CoreBluetooth 的使用讲解概念分析代码实战

最近研究了iOS下连接蓝牙打印机,实现打印购物小票的功能,对iOS中BLE 4.0的使用有了一定的了解,这里记录一下对BLE 4.0的理解。...很少把iPhone作为蓝牙外设在广播发送数据的情形,今天我就从iOS app开发的角度讲一些BLE 4.0的使用。...BLE之间的关系图.png 分析 我们一般的交互,是app作为客户端,而用户的实际数据多存储在服务器上,所以app客户端主动通过网络接口服务器端获取数据,然后在app中展示这些数据。...第六步,在通知更新特性中值的方法中读取特性中的数据(再设置特性的通知为YES的情况下)。 第七步,读取特性中的值。...而 iOS 中的 蓝牙库 也不止 CoreBluetooth 一个,还有其他的呢!

1.7K30

APP与硬件交互-蓝牙连接测试

蓝牙基础知识 1. iOS平台下蓝牙开发可以使用 MFI(ExternalAccessory 框架) 或 BLE (CoreBluetooth 框架) 进行,但实际开发中基本都使用 CoreBluetooth...蓝牙4.0 BLE (Bluetooth low energy) :它的优点在于传输快,耗电低,但传输数据有限,虽然这个传输字节大小硬件工程师可调,但也不会太大。 3....导入苹果系统蓝牙框架 #import 2....return; } //添加到外设名字数组中 [self.peripheraNamesaddObject:peripheral.name...centralconnectPeripheral:peripheral options:nil]; } 以上,已经实现了APP端连接蓝牙设备的功能,蓝牙设备连接完成后,还可以对设备进行数据读写,包括:获取外围设备服务和特征;外围设备读取数据

5.1K11

Swift 排序数组中删除重复项 - LeetCode

排序数组中删除重复项 给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。 不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。...示例: 给定数组: nums = [1,1,2], 你的函数应该返回新长度 2, 并且原数组nums的前两个元素必须是1和2 不需要理会新的数组长度后面的元素 要求在原地修改,同时是有序数组 定义一个长度标识...(Swift中已经废弃了++运算符,所以在使用 size += 1 代替。...当前Leetcode语言环境Swift 4.0) class Solution { func removeDuplicates(_ nums: inout [Int]) -> Int {...开始用Swift学习算法中,在LeetCode中开始做初级算法这一章节,将做的题目在此做个笔记吧。

5.1K10

iOS开发之BLE(二)——外设连接与断开

在iOS开发之BLE(一)——理论知识一文中,主要对iOS开发中BLE的基本理论知识进行了介绍,本文以中心模式为例讲解蓝牙的连接过程,并进行案例实践。...步骤 引入CoreBluetooth,初始化中心管理者CBCentralManager并设置CBCentralManagerDelegate 监听CBCentralManager的状态,当是On的时候进行外设搜索...发现外设CBPeripheral后,对其进行标记或者存储到外设数组中 选择外设进行连接 断开连接 案例 本文案例以一个UITableView展示周围可用的外设,通过点击UITableViewCell选择外设进行蓝牙的连接...// 外设数组 var peripherals: [CBPeripheral]!...if cell == nil { cell = UITableViewCell(style: .default, reuseIdentifier: "ble

2.9K20

iOS中的蓝牙

iOS中的蓝牙 概述 iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),iOS7开始过期...2.MultipeerConnectivity.framework(代替1) 只能用于iOS设备之间的连接,iOS7开始引入,主要用于非联网状态下,通过wifi或者蓝牙进行文件共享(仅限于沙盒的文件...),多用于附近无网聊天 3.ExternalAccessory.framework(MFi) 可用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内很少) 4.CoreBluetooth.framework...(时下热门) 可用于第三方蓝牙设备交互,必须要支持蓝牙4.0 硬件至少是4s,系统至少是iOS6 蓝牙4.0以低功耗著称,一般也叫BLE(Bluetooth Low Energy) 目前应用比较多的案例

1.1K70

iOS中的「回调(callback)」

比如,我们用Xcode新建一个OS X下的Command Line Tool工具,直接在main.m文件中的main函数写一段1加到100的代码,然后打印结果出来。如下图: ?...先假设有这么一个需求:我们需要用手机通过BLE(低功耗蓝牙)连接8个蓝牙设备,成功连接到8个蓝牙设备后,弹出提示框,提示使用者已经成功连接了多少个蓝牙设备。...蓝牙框架(就是用这个框架进行BLE开发的) @import CoreBluetooth; /// 默认需要连接的硬件为8个 const NSInteger defaultDivicesCount =...实现上面同样的需求,用通告的方式,就会变成这样: 先在MyCnetralManager.m文件中发送通告 #import "MyCnetralManager.h" @import CoreBluetooth...(在Swift中,与之对应的貌似是「闭包(Closures)」)。

3.3K30

iOS中的蓝牙开发以及对iOS中设计模式的进一步理解(47,48,49,50周总结)

首先有三个事情需要说明: 1、BLE(蓝牙4.0)可以实现1连多(我做的项目就是1台手机连接8个蓝牙模块); 2、iOS这边是拿不到蓝牙模块的mac地址的(安卓可以)(网上说可以通过蓝牙模块额外的返回值传送...); 3、iOS BLE的开发,用到的官方框架是CoreBluetooth。...而硬件返回的数据,就不是走这个“通道了”,它另外有一个“Data Out”的“特征”,这个“特征”专门负责数据模块发出(发给连结的手机)。只要“监听”了这个“特征”,就能收到模块发出的数据了。...其实经理写Device类(负责实现和硬件通讯功能的类)开始,项目就不是严格意义上的MVC模式了,它将“负责和硬件通讯的功能”控制器“V”中独立开来。...所以,我可以另一个角度去理解MVVM了:VM也可以看作是对“C”瘦身出来的内容,就类似我们的项目瘦身出“D”和“S”的内容,只是大家的瘦身方式不一样,而且VM还包含了部分“V”的内容(不知道是否就是ReactiveCocoa

89020

Swift 基本运算符之区间

Swift 提供了两个方便表达一个区间的值的运算符。 一:闭区间 闭区间运算符 a...b 定义一个包含 a 到 b (包括 a 和 b)的所有值的区间....<b 定义一个 a 到 b 但不包括 b 的区间. 之所以称为半闭区间, 是因为该区间包含第一个值而不包括最后的值。...半闭区间的实用性在于当你使用一个0始的列表(如数组)时, 非常方便地0数到列表的长度。...(i + 1) 个人叫 \(names[i])") } //运行结果 //第 1 个人叫 Anna //第 2 个人叫 Alex //第 3 个人叫 Brian //第 4 个人叫 Jack 注意: 数组有...系列文章推荐阅读 Swift 基础之控制流 Swift 基础之常量和变量 Swift 基础之整数和浮点Swift 基础之类型 Swift 基础之布尔值和元组 Swift 基础之可选 Swift 基础之断言

29620

IL指令速查

Bgt.Un.S 当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。 Ble 如果第一个值小于或等于第二个值,则将控制转移到目标指令。...Ble.S 如果第一个值小于或等于第二个值,则将控制转移到目标指令(短格式)。 Ble.Un 当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则将控制转移到目标指令。...Ble.Un.S 当比较无符号整数值或不可排序的浮点值时,如果第一个值小于或等于第二个值,则将控制权转移到目标指令(短格式)。 Blt 如果第一个值小于第二个值,则将控制转移到目标指令。...Ldelem.R4 将位于指定数组索引处的 float32 类型的元素作为 F 类型(浮点型)加载到计算堆栈的顶部。...Volatile 指定当前位于计算堆栈顶部的地址可以是易失的,并且读取该位置的结果不能被缓存,或者对该地址的多个存储区不能被取消。

1.6K70

IL指令详细表

Bgt.Un.S 当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。 Ble 如果第一个值小于或等于第二个值,则将控制转移到目标指令。...Ble.S 如果第一个值小于或等于第二个值,则将控制转移到目标指令(短格式)。 Ble.Un 当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则将控制转移到目标指令。...Ble.Un.S 当比较无符号整数值或不可排序的浮点值时,如果第一个值小于或等于第二个值,则将控制权转移到目标指令(短格式)。 Blt 如果第一个值小于第二个值,则将控制转移到目标指令。...Ldelem.R4 将位于指定数组索引处的 float32 类型的元素作为 F 类型(浮点型)加载到计算堆栈的顶部。...Volatile 指定当前位于计算堆栈顶部的地址可以是易失的, 并且读取该位置的结果不能被缓存,或者对该地址的多个存储区不能被取消。

2K20
领券