Tag: 蓝牙低功耗

我怎样才能通过蓝牙接收简单的整数值在ios中

我试图学习如何让一些传感器插入到Arduino板上,通过蓝牙与红熊实验室迷你板交谈,但却碰到了砖墙。 传感器读取数据,并通过BLE发送到手机。 到目前为止,我已经连接到设备,我回来似乎是数据,但我无法理解它。 我写了一个看起来像这样的小图,来模拟传感器数据。 #include <SoftwareSerial.h> SoftwareSerial bluetooth(5, 6); void setup() { bluetooth.begin(57600); } void loop() { //int reading = analogRead(2); int reading = 123; // fake reading byte lowerByte = (byte) reading & 0xFF; byte upperByte = (byte) (reading >> 8) & 0xFF; bluetooth.write(reading); bluetooth.write(upperByte); bluetooth.write(lowerByte); delay(1000); } 在iOS中,我发送一个调用来读取数据,然后通过一段代码来接收数据: – (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic […]

设备locking时扫描外围设备

我的中央pipe理者可以在前景和背景中检测到新的外围设备 – 我知道这一点,因为我发现一个新的外围设备时触发UNNotification。 但是,当设备被locking时,似乎不会继续扫描新的外围设备。 在我的function中,我启用了使用LE配件的背景模式以及远程通知。 我是否错过了一些可以让我在设备locking时检测新外设的BLE? 更新w /更多信息: 以下是我如何实例化我的中央pipe理器并开始扫描: central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey : kRestoreIdKey]) central!.scanForPeripherals(withServices: [kMyService, kMyOtherService], options: [CBCentralManagerScanOptionAllowDuplicatesKey : true]) 这是启用的背景模式: 此外,背景模式的plist键: 任何想法为什么我的本地通知将触发时,它在前景或背景扫描,但不是当屏幕locking?

如何从具有相同服务UUID的两个设备中find特定的BLE 4.0外设

对于BLE 4.0,它提供API来发现具有服务UUID数组的外设。 我只想find具体的一个。 如何做到这一点? 如果需要将标识符分配给特定设备,该怎么做? (我想我的问题需要iOS的核心蓝牙的一些背景。)

使用CoreBluetooth(BLE)将数据从CentralManager发送到PeripheralManager

我有我的应用程序运行在两个iOS设备(都有6.1.4),其中一个设备作为中央和一个作为外设。 我已经成功地从外围设备到中心获得通知(设置通知的特征)。 然而,我想要从中央写入一个具有可写特性的价值,但总是失败。 peripheral:didWriteValueForCharacteristic:error:委托的方法立即被调用的地方的错误说明: “一个或多个参数无效” 我一直在寻找networking的任何线索,但还没有拿出什么是错的。 这就是我如何在外围设置特性: [[CBMutableCharacteristic alloc] initWithType:<My CBUUID> properties:CBCharacteristicPropertyWrite value:nil permissions:0]; 我看到,当我发现中央的特点,我的可写的特点是在那里。 我在那个时候储存了一个参考资料,以后我会在写我的价值时尝试使用。 我正在写的价值只是一个文本string,我转换为一个NSData像这样: NSString *payloadMessage = @"Hello"; NSData *payload = [payloadMessage dataUsingEncoding:NSUTF8StringEncoding]; [peripheral writeValue:payload forCharacteristic:<myCharacteristic> type:CBCharacteristicWriteWithResponse]; 我能看到的唯一奇怪的是,我的特性的属性设置为138.它看起来既可写,也具有扩展的属性。 不知道为什么这是由CoreBluetooth框架自动添加。 不知道是否重要。 我试图发送的特性或数据似乎有些不对,但对于我的生活我无法弄清楚。 如果有人有任何build议或想法,我将不胜感激的帮助

如何以固定的时间间隔在后台重启CoreBluetoothpipe理器实例

我正在开发使用CoreBluetooth的iOS应用程序,并且在应用程序BackGround中有一个问题。 通常,iOS应用程序无法在后台长期运行。 (例如,按HomeButton切换其他应用程序)但我的应用程序设置为“使用蓝牙LE配件”作为BackGroundMode,所以我可以在后台监控区域。 我在didEnterRegion中实现了startRangingBeaconsInRegion。 当进入一个地区时,测距区域将被启动,并在iOS大约10秒后停止。 但是我想总是在后台使用范围。 因为我的应用程序只使用一个UUID来检测超过20个信标(20意味着限制startMonitoringForRegion),我想知道如何在一个地区的信标。 (关于只使用一个UUID的原因,请看这个技巧。 iBeacon /蓝牙低功耗(BLE设备) – 信标的最大数量 。) 所以我想在后台以固定的时间间隔重新启动CoreBluetoothpipe理器实例的方式。 如果我可以做交替didEnterRegion – > didRangeBeacons->重新启动 – > didEnterRegion – > didRangeBeacons – >重新启动 – > …,我可以检查如何在这个区域以固定的时间间隔的信标。 也许我需要后台获取…我会稍后尝试。 如果你知道这种方式是否可用,请告诉我。 或者如果您有任何build议,请告诉我,我会尝试。 更新2014/03/07 17:45 BackGround获取将以UNSTABLE间隔触发。 所以这种方式不是解决scheme…

BTLE 4.0 – ConnectBlue低能耗串行端口服务

我正在寻找一种方法,通过串口(RS232)将数据从embedded式设备加载到iPhone。 该应用程序需要在AppStore上,我们公司不属于MFI计划。 在你说之前,这是不可能完成的,我们正在研究蓝牙低功耗4.0作为一个可能的解决scheme。 我们可以创build一个设备,将ConnectBlue的OBS421模块转换为串口适配器(具有突发速度限制)。 为此,connectBlue提供了自己的称为串行端口服务的协议 ,但仅在非常高的层次上进行logging。 有没有人有使用这个协议的经验? 如果是这样,你能提供一个以这种方式build立通信的例子(目标C)代码吗? 有没有人向苹果公司提交了一个应用程序,而不会因为侵犯MFI规则而被拒绝呢? 还有一个问题。我试图连接的设备仅支持EZII Escape Computer Command Set标准(“EZ2 2.0”及更高版本的PROG ID)中的串行命令。 它们看起来不同于普通的ATT命令。 示例: <ESC>Gc100<EOT> 。 任何想法,如果我可以通过ConnectBlue的LE-SPS发送这样的命令? 非常感谢您的帮助。 谢谢!

你可以在iOS应用程序中配对蓝牙LE设备吗?

你可以在iOS应用程序中配对蓝牙LE设备,即不通过设置。 试图让用户更容易与特定设备配对。 如果这样怎么样?

蓝牙LE(4.0)有多less个中心可以连接到外设?

我想知道一个外设可以同时连接多less个中心。 我的问题是特定于iOS,但我会很感激大家的答案。 几件事情: 我知道,中央,而不是外围设备,旨在处理多个连接。 不过,我想用各种理由尝试相反的设置。 从蓝牙核心规格V4 – “Peripheralangular色针对支持单一连接的设备进行了优化,并且不如中央设备复杂,支持外设angular色的设备只需要支持控制器从属angular色的控制器,Centralangular色支持多个连接,并且是所有连接的发起者设备支持中心angular色,支持控制器主angular色的设备需要一个支持更多复杂function的控制器,与其他LE GAPangular色相比“。 我已经成功地将3个中央处理器连接到外围设备上进行读/写处理,并且每个中央服务器都订阅了一个特性通知。 不幸的是,我没有更多的设备来进一步testing。 所有使用的设备都是运行iOS 7.1的各种支持BLE的iOS设备。 规范并没有规定可连接到中央设备的外设数量的理论限制,但实际上人们报告的限制是在8到20之间。这种区分是否存在于相反的情况? 提前谢谢大家。

在iPhone 6(8.1.3)中忘记BLE设备

我不知道如何忘记iPhone设备中的BLE设备。 去设置 – >蓝牙页面,我看到设备列表,但我没有看到任何选项,忘记它。

Ios外围设备在背景中

我们需要在我们的项目中检测正在运行使用蓝牙LE的自定义APP的iPhone的接近程度。 检测器(扫描仪,中央…)将使用BLE集成电路(来自德克萨斯州或北欧)实施。 我的意思是,扫描仪不是另一个IOS设备…运行核心蓝牙作为中央.. 对于探测器来猜测邻近度,这个想法是非常简单的,只是宣传一个UUID专有的服务。 在前台工作正常,UUID和本地名称被通告(主通告数据包中的UUID,以及SCAN响应数据包中的本地名称….),我们的扫描器能够决定这个iOS设备运行我们的应用程序。 出现背景时出现问题 iOS停止广播UUID和本地名称。 (作为核心蓝牙解释文件…我知道…) 此时(后台),IOS开始在主通告数据包中广播一个SPECIAL MANUFACTURER DATA,而在SCAN Response数据包中没有任何数据) 我们使用蓝牙嗅探器看到的数据包是: 0x14(不包括这个字节的数据包的长度)。 0xFF(制造商特定的数据ADtypes)。 接着 : 0x4C,0x00(如果数据包符合BLE 4.0规范,则此数据为制造商标识符)。 0x01,0x00,0x00,0x00,0x00,0x00,0x80,以及十个0x00多…. 我知道苹果公司说,在后台只有一个IOS设备search特定的服务可以发现它。 (真的我不知道他们怎么做到这一点,除非他们连接到外设和检索服务,或者如果外设知道其他IOS设备正在扫描,因为它在扫描请求中的地址,然后改变广告数据在后台)。 主要问题是: 有什么文件或知识这个制造商的数据意味着….也许这将是可能的扫描器知道这个信息的基础上,这是一个iOS设备在后台广告,然后连接看,如果定制服务是在那里。 (不是一个快速和干净的解决scheme…但我没有看到任何其他的解决方法….) 有没有人与这种情况下工作…并find一个干净的解决scheme….. 我听到有人强迫申请不要背景。 这个限制,将会阻止很多可能的项目。