当前位置: 首页 > 知识库问答 >
问题:

如何从同一个ble设备访问两个不同的服务

訾安邦
2023-03-14

例如,我有两个心率监视器与我的平板电脑配对。我正在使用这样的代码来获取HRM设备列表:

var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync
(
    GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.HeartRate)
);

然后,我在GUI中显示一个列表框,其中包含从设备[I]获取的设备名称。名称例如,我选择索引为0的设备。然后我可以访问it人力资源服务和人力资源管理特征:

var service = await GattDeviceService.FromIdAsync(devices[0].Id);
var characteristic = await service.GetCharacteristics(attCharacteristicUuids.HeartRateMeasurement);

除了心率,我还需要电池状态。如何访问同一(已选择)设备的电池服务?

共有1个答案

汤承允
2023-03-14

开始之前的一些信息:

在扫描蓝牙设备之前,您必须将其与计算机配对!

列出您配对的设备:

ListBox1.Items.Clear();

var devices = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));

foreach (var device in devices)
{
    ListBox1.Items.Add(device);
}

如果您想了解蓝牙设备的电池寿命:

连接到BLE设备后,如何获取电池电量?

要同时访问多个服务,您需要“重新连接”到设备:

设备A一次只能连接一个到设备B上的服务S。设备A可以同时连接到设备B、C、D和E等上的服务S。

@alanjmcf

来源:同时建立多个蓝牙SPP

但不要与方法(GetAllIncludedServices())混淆 ,因为它确实返回“包含的服务”。正如另一个问题中的一个答案所述:

您可能不想获得“包含的服务”。Included services是BLE中的一个特殊概念,我怀疑您正在使用它来链接一个服务和另一个服务。

@埃米尔

 类似资料:
  • 我的情况是这样,在 host H 上, 有 docker-compose.yml A 有 docker-compose.yml B 在 host A 上,curl localhost:801 可以访问。 但是进入 docker-compose.yml B 的 容器 nginx,curl host.docker.internal:801 缺无法访问,如何做到可以呢?

  • 我得写一个石英调度器来在Spring运行一个作业。我还需要添加另一个函数来暂停同一个作业。此代码存在于单个独立批处理中。 触发这两个功能:1。开始工作2。暂停作业我已经用main()编写了两个类来执行。 问题是当我触发pauseJobs的main()时,它会启动不同的应用程序上下文,而不是使用相同的应用程序上下文。 > 用于Application Context初始化的Singleton类 类开始

  • 我对Spring框架有点陌生。我有一个用Spring (4.2.1)编写的web应用程序。我正在尝试使用千分尺库来揭示度量标准,并将与普罗米修斯一起使用。 应用程序的相关结构如下: -核心模块(JAR) -webservice模块(WAR) 我创建了一个PrometheusService类,它是在核心模块中定义的bean。bean中定义的是和: 我创建了指标资源,它是一个公开 /Metrics e

  • 我有一个稳定的颤振通道SDK,位于c:\flutter。它在系统环境变量中设置为Flutter的默认路径。 在IntelliJ中为我们的客户创建新的Flutter项目时,我使用了这条路径c:\flutter。 我还在c:\flutter_master下载了颤振主频道,我需要将此颤动SDK(主)用于另一个项目。 对于不同的项目,我如何才能在同一设备上正确拥有两个工作颤振版本,而无需每次都使用系统环境

  • 我有两个不同的服务器和,现在我有中的和中的。我试图加入这两个表在MySQL像这样。 但是我犯了一个错误。这在MYSQL中是可能的。

  • 我想确认一个用例,为此,我没有找到任何文档。如果两个用户登录在同一个设备中,而我使用的是setUserId方法,那么会发生什么?我的理解是:每当手机(iOS/Android)中安装了一个新的应用程序时,Firebase就会为该设备注册一个匿名用户,让我们说“Device-A”。当使用setUserID(user1)方法时(当user1登录到应用程序中时),Firebase开始用该用户id来标识该用