问题标签 [cbperipheral]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 使用 Swift 发布和发现 BLE 失败
我正在尝试使用以下内容宣传 BLE
并想发现外围设备
然而 didDiscoverPeripheral 方法从未被调用。我正在测试两个 iPhone5。谁能告诉我我做错了什么?
ios - 无法在 didUpdateNotificationStateForCharacteristic 中获取 CBcharacteristics 值
我有一个已成功连接的 BLE 设备。在这种情况下,每当我向 BLE 设备发送字符串“GET DATA”时,设备都会通过向我发送特定响应来响应。我正在使用 didDiscoverCharacteristicsForService 来写入值(“获取数据”)。我期待 didUpdateNotificationStateForCharacteristic 中的数据,但我每次都会得到响应。
ios - UITextView 被阻止,因为 peripheral:didUpdateValueForCharacteristic: 被调用非常快
我试图通过附加来自的数据在 UITextView 中显示数据peripheral:didUpdateValueForCharacteristic:error:
。在这种情况下peripheral:didUpdateValueForCharacteristic:error:
,调用非常频繁,因此UITextView
( self.responseTextView
) 要么无法打印任何数据,要么阻塞 UI。
ios - 如何从单个 iOS 应用程序进行 BLE 多广告?
我正在开发一个 iOS 应用程序,我需要在其中做 BLE 的多广告。我创建了两个实例CBPeripheralManager
并尝试同时发布两个不同的广告包,但它不起作用。
有人可以建议任何方法来完成这项任务。从另一个中央(扫描仪)应用程序,我应该得到两个不同的广告。
ios - Xamarin iOS 蓝牙低功耗 - CBPeripheral.UpdatedCharacteristicValue 读取 TX 特征显示意外数据
我最近收到了一个用于蓝牙转串口的 BLE 设备。它使用 TruConnect,我正试图让它与我的串行设备通信。串行设备通过串行电缆接收通信,并回显发送给它的任何内容以及发送的命令的任何结果。
现在,我只是尝试向 BLE 设备发送 TruConnect 命令,以检查 BLE 设备设置的当前波特率。
我根据我发现的这个 TruConnect 指南编写了一些代码: https ://truconnect.ack.me/1.5/apps/communicating_via_ble#reading_from_a_truconnect_device_serial_interface 。
问题似乎是,每当我尝试从 tx 特征中读取任何应该有数据的东西时,数据都不正确。
设置 CBPeripheral 事件:
写入 rx。这应该用于实际发送命令。
所以我的问题是,为什么在调用事件时我没有得到预期的数据CBPeripheral.UpdatedCharacteristicValue
?偶尔我会得到预期的数据,但这种情况非常罕见,而且我似乎找不到任何合乎逻辑的原因或模式来解释为什么会发生这种情况。
ios - iOS CoreBluetooth 连接后丢失本地 peripheral.name
我正在 iOS 上使用 CoreBluetooth 构建蓝牙应用程序。每次启动应用程序时,用户都会收到一个 ID,该 ID 保存在 Peripheral 的 LocalNameKey 中,开始用它做广告并开始使用 CentralManager 搜索其他用户。每个用户都由他的本地名称标识,这很好。
使用 CentralManager,每个用户都可以将值写入另一个用户的 Peripheral 特征,并通知他们有关更改。这也行得通。问题发生在这里,在连接完成并且 Peripheral 执行了 didRecieveWriteRequests 方法之后,CBPeripheralManager 和 CBCentralMange 都被重置和重新初始化。之后,Peripheral 的 LocalNameKey 不再是我的特定 ID,而是 iPhone 的 Given Name 或(null)。它破坏了应用程序的整个想法,但我很确定它可以完成。
当我关闭并打开蓝牙时,它再次起作用。
这就是我在连接后清理 Central 的方式:
这就是我重新初始化蓝牙的中央和外围设备的方式:
ios - 如何在 CBPeripheral 设备上编写命令?
我有一个有两个模块的 BLE 设备
1-蓝牙 (BlueCreation BC127A) 2-微控制器附有一些命令,如 LOGIN RESET VERSION 等。
我想向与 uC 通信的 BLE 写入命令。
按照我的规范/文档,数据包结构应该是这样的:
当我在 BLE 上编写确切的命令时,出现错误:“值的长度无效。”
根据文档,它的数据包长度是 17,我认为这是错误的,因为当我得到它时 sizeof(byte)/sizeof(char); 我得到 4。我使用了这两个值,但我无法得到积极的回应。
我需要帮助通过成功编写命令来克服这个问题。这是我的第一个蓝牙集成项目。
我的代码遵循数据包结构,我的命令 LOGIN 变为:
谢谢。
ios - 首次设置 BLE 外设名称的方式和时间
更改硬件上的外围设备名称:
- 何时以及如何更改 BLE 外围设备名称?
- 这是需要写入固件的东西吗?如果是这样怎么办?
我正在查看一些 iOS 客户端代码并使用CBPeripheral使用 CoreBluetooth 库检测 BLE 外围设备。我可以看到我的 iPad 的广告,其中名称字段具有可变名称“mm24 iPad”(我可以从 iTunes 更改)。
我怀疑每个 BLE 外设都可以在生产时使用默认名称进行配置,然后随后使用 BLE API 进行修改。这个对吗?
android - 蓝牙外设 ADVERTISE_FAILED_DATA_TOO_LARGE
我正在尝试在 NEXUS 9 中做广告并收到 ADVERTISE_FAILED_DATA_TOO_LARGE 的错误。当我在成功发布广告后添加服务时,它工作得非常好,但是如果我通过 Advertise Data builder 添加服务以便其他设备可以在扫描时进行过滤,我会收到错误代码 1,即 ADVERTISE_FAILED_DATA_TOO_LARGE
a) 工作守则
并添加服务:
b)最初添加服务时不起作用,以便可以通过过滤器被中央发现:
在调用之前调用BLEBroadcast()
函数startAdvertisingService()
并添加
给出错误代码 1 的广告失败。
ios - CBCentralManager didFailToConnectPeripheral
我正在为 OS X (10.10) 和 iOS 8 开发一个应用程序,以与 BLE 外围设备交换一些消息。我希望我的应用程序能够找到并连接到外围设备,向其发送消息,最后断开连接,以便可以从其他设备自由访问外围设备。除了以下特殊但仍然重要的情况外,一切正常:我扫描 BLE 设备并找到我的设备,但我仍然没有连接到它,因为我没有要发送的消息。然后我走开(超出范围)或者干脆关闭外围设备。我仍然将我的 CBPeripheral 保存在 var 中,并尝试连接到它。当我希望调用方法 centralManager:didFailToConnectPeripheral:error: 以便我可以再次开始扫描时,什么也没有发生。
centralManager:didConnectPeripheral 工作正常。该文档告诉蓝牙连接请求不会超时,所以我想知道还有哪些其他类型的问题可能导致连接失败