问题标签 [btle]
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.
android - Android 与蓝牙 LE 设备配对
我正在试验 Android 手机和 Android Wear 智能手表之间的蓝牙(低能耗,或特别是 4.0)连接。就我而言,我使用的是三星 Galaxy S6 和 Moto 360(第一代),它们都支持蓝牙 LE。
我认为蓝牙设备应该更喜欢使用最新的协议。尽管这两种设备都支持经典的 BT 和 BTLE,但它们“应该”通过 BTLE 连接。然而,在观察使用 Ubertooth One ( http://ubertooth.sourceforge.net/hardware/one/ ) 收集的数据后,我发现情况并非如此。显然,我在配对之前从 Moto 360 获得了 ADV_IND 广播数据包,一旦点击手机与手表配对,广播就会停止,并且看不到 CONNECT_REQ 或任何其他数据包。
由于 Ubertooth 看不到经典的 BT 数据包,我想知道是不是因为智能手表在经典 BT 和 BTLE 频道上广播,而手机只是通过经典 BT 连接?
ios - 将数据从 BTLE 服务发送到 Swift 中的视图控制器
我正在松散地遵循本教程
https://www.raywenderlich.com/85900/arduino-tutorial-integrating-bluetooth-le-ios-swift
编写一个从 BTLE 外围设备读取流数据的应用程序。该应用程序清楚地演示了如何将数据从我的 ViewController 发送到 BTLE 服务到我的微控制器,但我不知道如何从另一个方向获取数据。
我可以访问 BTService 对象中的数据,并且可以在控制台中将其打印出来,但是如何更新来自 BTService 对象的文本框?
我可以找到大量的 iOS Swift 教程,但它们似乎都专注于从视图控制器触发的事情。我无法从视图控制器实时观察数据。
ios - 当用户从后台手动退出应用程序时如何检索 BTLE 外围设备?
解释 :
我正在使用核心蓝牙框架连接到 BTLE 外围设备,将外围设备标识符保存在数据库中。
同时,我将外围设备保存在一个数组中以处理与外围设备的重新连接。
但是,当用户手动退出应用程序时,我的数组变为空。
因此,我将无法再次重新连接这些外围设备。
现在,我的数据库中有外围设备标识符。
我读过它,发现有一个委托方法
获取外围设备,但它没有返回任何内容。
我怎样才能再次获得外围设备?
我还检查了上面的文件。因为他们提到了重新连接到外围设备的方法
ios - 在另一个应用程序连接到它之前找不到蓝牙外围设备
我有一个可以连接到蓝牙 LE 心率监测器的健身应用程序。在过去的几年里,我对它没有任何问题。现在我正在为 iOS 10 更新它,并且发生了一些奇怪的事情。如果我扫描这样的外围设备......
...它找不到心率监测器——扫描开始但从didDiscoverPeripheral
未被调用。如果我尝试竞争对手的应用程序 #1,它会从 HRM 中查找并显示数据,但如果我退出并返回我的应用程序,我的应用程序仍然找不到 HRM。如果我尝试竞争对手的应用程序 #2,它会查找并显示来自 HRM 的数据,如果我退出它并返回我的应用程序,那么我的应用程序会立即连接并按预期工作。似乎竞争对手应用程序 #1 有不同的方式来查找 HRM,而竞争对手应用程序 #2 不仅可以找到 HRM,还可以让我的应用程序在之后找到它。虽然这种情况看起来很奇怪,但它是 100% 可重现的。
我可以对正在发生的事情做出两个猜测:
1) 竞争对手应用程序#2 在 HRM 上启用了一些设置,以便找到它。但我认为这是不可能的,因为我认为与 BTLE 配件进行通信是一种方式。
2) iOS 10 有某种默认禁用的隐私设置,但竞争对手的应用程序 #2 启用了它,允许我的应用程序在之后查看 HRM。
这有什么意义吗,或者有人对出了什么问题有理论吗?
ios - Does CBCentralManager connect ever time out?
I know the answer is nominally "no", but I mean really—what if the app goes into the background (with BTLE background processing enabled)? For 24 hours? Across an app update?
Under the heading "Reconnecting to Peripherals", this Apple documentation describes a reconnection workflow that first tries to reconnect to previously paired peripherals found via retrievePeripheralsWithIdentifiers:
but then starts scanning again if you fail to connect. How do you know when to give up on connect
-ing to a previously found peripheral if there is no formal timeout? How do you know when to start/keep scanning if the idea is to re-connect to a previously found BTLE device whenever you move back into proximity to it, without the user necessarily interacting with your app?
Also, a note further down that page says that some BTLE devices might invent a random identifier for themselves every time they're powered on, so even though you find some previously paired peripherals from retrievePeripheralsWithIdentifiers:
you might not be able to connect to them as their names have changed. Do any BTLE devices do that in practice? That's nuts!
android - Android 应用程序如何在不请求位置权限的情况下与 BTLE 设备配对?
为了扫描 BTLE 设备,Android 应用程序需要ACCESS_COARSE_LOCATION
或ACCESS_FINE_LOCATION
. 但是,该应用程序是否需要扫描BTLE 设备才能与之配对?
我在一个与睡眠监视器配对的应用程序中特别看到了这一点,并证明它是这样的:
从 Android 6.0 Marshmallow 开始,Android 要求执行低功耗蓝牙扫描的应用首先请求并获得访问设备定位服务的权限。
出于这个原因,Sense 将在设置过程中请求访问定位服务的权限。为了完成与 Sense 的配对,您需要授予对位置服务的访问权限。
这真的有必要吗?它们如何在不需要用户位置的情况下配对?我已经可以通过操作系统蓝牙对话框与独立于应用程序的设备配对。
swift - Swift 中蓝牙读取的 Characteristic.value
我正在尝试从 BT 设备读取并转换为字符串。
根据我在网上找到的例子,我做了
但我的 u16 为空,即使特征值包含
谁能指出我正确的方向?
ios - 如果先连接其他应用程序,CoreBluetooth 不会发现心率监测器
我希望我的用户能够使用我的应用程序跟踪他们的心率。所以我用CBCentralManager
它。如果没有其他应用程序连接到心率传感器,一切正常。我遇到的问题是,如果我先开始使用 Strava 或 Endomondo。然后我就再也找不到任何设备了。反过来,一切正常,所以我想我在某处缺少选项?
我目前在做什么:
我CBCentralManager
像这样实例化我的
这将导致触发连接的委托方法
从那里没有找到外围设备。
但同样,当我强制退出 Endomondo 或 Strava 等其他应用程序,然后启动我的应用程序时,一切正常。
bluetooth - IPSP 功能(6LoWPAN over BTLE)可以使用 BTLE 4.0(不是 4.2)适配器获得吗?
我正在开发一个使用 6LoWPAN over BTLE(蓝牙低功耗)的 Linux 应用程序。我读过 BTLE 上的 6LoWPAN 需要支持数据包长度扩展,这是 BTLE 4.2 标准引入的一项功能,因此,使用常见的 BTLE 4.0 适配器不应该可用。
这对我来说是个问题,因为我一直在寻找支持 BTLE 4.2、与 Linux 的 BlueZ 堆栈兼容的用于 PC 的 USB 加密狗,但目前似乎没有可用的东西,因为它可以在这里阅读:
https://groups.google.com/forum/#!topic/btstack-dev/IeA92qNGR9c
但是,我已经阅读了链接
树莓派 3 上的 MQTT-SN,BLE 上的 6lowpan
使用一些 Raspberry PI 3 可以通过 BTLE 支持 6LoWPAN。
Raspberry PI 3 中集成的 BTLE 芯片组是声明(仅)与 BTLE 4.1 兼容的 Broadcom BCM43438。
是否可以仅使用兼容 BTLE 4.0/4.1 的适配器在 2 个 RaspPI3 板之间创建有效的 6LoWPAN 连接?由于数据长度扩展不可用,适配器如何使用短 BTLE 帧管理与 6LoWPAN 的兼容性?
之前的限制是否可以通过集成在最后一个 Linux 内核中的 Broadcom 芯片组的固件更新来克服,从而通过软件增加对数据包长度扩展的支持?
您知道一些支持(或可以更新以支持)BTLE 4.2 + 数据长度扩展并且与 BlueZ Linux 堆栈兼容的 USB 加密狗吗?
c# - 是否可以在 WPF 应用程序中连接到 BTLE 设备?
所以我正在尝试连接到 Polar H7 心率监测器,我需要使用 WPF 应用程序来完成它。我正在使用 Windows 10。
现在我已经使用 UWP 应用程序完成了这项工作,并且它运行良好,但我想使用 WPF(如果可能的话)来做同样的事情。
我发现这篇关于如何在 WPF/winforms/etc 中使用 Windows 10 API 的帖子并认为很完美,这就是我所需要的。我成功地将蓝牙 API 添加到我的 WPF 项目中,并输入了适用于我的 UWP 项目的代码,但它不起作用。
这是我的代码片段,直到它停止工作:
现在,这个电话
正在返回 null。当我制作 UWP 应用程序时,我实际上遇到了同样的问题,我发现这是因为我忘了扔这个
进入我的清单文件。一旦我把它放进去(在我的 UWP 应用程序上),它就可以正常工作了。但是在 WPF 应用程序中,这部分似乎没有等效的位置。现在回到关于如何将 Win 10 库添加到 WPF 的博客文章,这一点似乎告诉我一直都是这样:
您不能使用的第二组 API 是依赖于应用程序包标识的 API。UWP 应用具有程序包标识,而 PC 软件没有。包身份信息可以在应用清单文件中找到。
并进一步研究帖子中链接的 Microsoft 主题,它确实指定了关于蓝牙的“打包应用程序目前不支持所有 API”。这是非常不具体的。
还应该提到,在尝试此之前,我尝试使用 32feet 库,但我的设备根本没有显示,而其他设备(不是 LE)则显示,所以我假设 32feet 不支持 BTLE。我发现这对 32feet 提出了同样的要求,这就是让我尝试上面详细介绍的内容的原因,但我仍然不是 100% 清楚我是否可以简单地使用 32feet 连接到 BTLE 设备。
所以我的问题是,我正在尝试做什么(WPF 应用程序使用 Windows 10 API 连接到蓝牙设备)目前无法完成,这对吗?如果没有,我做错了什么?