- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试实现一个 Android 应用程序来接收来自医疗设备的数据,但 我无法通过发现过程并让手机和设备相互配对或连接。
描述医疗设备:该设备正在使用服务发现协议(protocol) (SDP) 和串行端口配置文件 (SPP)。它启动查询程序以发现(最多 10 个)具有匹配 COD 过滤器和服务名称的周围接入点。然后它通过检查 PIN 顺序地与接入点建立连接(使用 Page Procedure)。匹配 PIN 后,将上传数据。上传数据后,设备等待确认。设备是主设备并启动通信。
我无法控制医疗设备。我所能做的就是启动它并等待上述过程(测量后)。
Android 应用程序:我从 Bluetooth Chat Example 开始在开发者页面上。到目前为止,我已将 UUID 替换为 00001101-0000-1000-8000-00805f9b34fb
以使用 SPP 并将服务名称设置为适当的名称。我可以通过从计算机检查服务来确认这似乎是正确的。由于医疗设备是查询和发起通信的设备,因此我的服务使用 BluetoothServerSocket
和 accept()
方法开始监听它。
在开发人员页面中,我读到 UUID 必须在尝试通信的应用程序之间匹配。由于我无法为医疗设备设置任何 UUID,我想知道这是否会成为问题,或者医疗设备使用 SP 配置文件是否足够?
如果服务名称和 UUID 正确,并且医疗设备实际上会尝试连接到正在监听连接的蓝牙服务,Android 系统会提示我手动输入 PIN 以便能够配对设备(因为医疗设备有预设 PIN)?
我在 Android SDK API 中没有找到任何可以让我为我的蓝牙服务设置 PIN 的东西(以防它失败),这可能吗?
我了解到,现在通常 PIN 码是由系统生成的,而用户确认是唯一需要的。我想不在我的系统中,因为设备有点旧。
如果您愿意分享一些与我上面描述的内容相关的知识、提示和猜测,我将非常感激!
提前致谢,弗雷德里克
编辑:
现在我已经将设备与 bluegiga 盒子配对,它们可以正常通信。现在我正在寻找血压设备连接到我手机的标准。我可以从 Linux 计算机(终端中的 sdptool search SP
)检查 bluegiga 提供的蓝牙服务,并将其与我在 Android 上提供的蓝牙服务进行比较.这些值是我得到的:
~$ sdptool search SP
Inquiring ...
Searching for SP on 8C:71:F8:E5:XX:XX . . .
Service Name: 1808130054
Service RecHandle: 0x10003
Service Class ID List:
UUID 128: 00001101-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 13
´
Seaching for SP on 00:07:80:88:XX:XX . . .
Service Name: 1808130054
Service Description: 1808130054
Service RecHandle: 0x10005
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 12
Language Base Attr List:
code_ISO639: 0x656e
enconding: 0x6a
base_offset: 0x100
找到的第一个设备是手机 (mac=8C:71...Google Nexus S),第二个 (mac=00:07...) 是 bluegiga。我注意到 Android 设备上没有服务描述。我认为最重要的区别在于服务类 ID 列表。 Android 上的 UUID 128 但在 bluegiga 上描述的格式完全不同。
是否可以在 Android 上使用除 UUID 之外的其他格式的服务类 ID 来实现?
你能操作在服务发现数据库中注册的服务记录吗?
是否有可能以某种方式直接实现BlueZ,使用 native 开发c/c++?
/弗雷德里克
最佳答案
如果您可以提供医疗设备的名称/链接(如果它是商业设备),则阅读其指南可能有助于更多地猜测可能发生的情况。以下是一些建议:
除了串行端口 UUID 之外,SPP 上的每个服务都可以有一个自定义的特定 UUID - 例如,医疗设备可以使用这个自定义的特定 UUID 查找与其兼容的服务。
如果医疗设备当前成功连接到 PC 或其他接入点并传输数据,您可以尝试读取该设备的 SDP 记录并确定除了 SPP UUID 之外还使用了哪个特定 UUID(如果有),并使用在您的应用程序中也一样。
如果医疗设备无法找到您的手机/应用程序,可能是因为它无法被发现。 Android 设备默认是不可发现的,即使你是服务器,也只能连接不可发现,你可以尝试通过程序或设置让它可发现,看看医疗设备是否能找到你的设备。见这里 - Enabling Discoverability in Android
对于PIN配对,安卓设备应在未配对的设备尝试连接时启动配对过程,您可以在通过建议(1)和(2)后进行尝试,如果其中一个设备的版本早于蓝牙 2.1 版本,则使用 PIN 配对,即使是较新的设备,也需要在电话上进行一些用户干预/确认的 6 位密码才能进行配对(这只是一个很好的安全策略不允许这种情况在没有用户干预的情况下自动发生),希望配对仅在第一次发生连接时需要,以后不需要任何用户干预来进行后续连接。
关于android - Android 与其他设备之间的蓝牙 SPP、UUID 和 PIN 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263144/
我试图再次将反射的 UUID 转换回实际的 UUID 对象,但找不到方法,当我打印反射值时它看起来是正确的,但在尝试转换时我找不到方法。 package main import ( "fmt"
我想知道 UUID 是否是唯一的,即使它们是在不同的系统上生成的,这些系统可能采用不同的算法。例如,如果您在 MySQL 和 .Net 中生成了一堆 UUID,碰撞的可能性会更高,还是所有系统都使用完
是否可以一个接一个地创建两个重复的 UUID?我不熟悉 UUID 是如何生成的,但我猜想如果您在同一毫秒内从同一 MAC 地址创建了两个单独的 UUID,那么它们将完全相同。这是真的吗? 我想我是在问
当我使用 python uuid 模块中的 UUID() 函数检查我们的测试 uuid 之一时,我遇到了这种奇怪的行为。 从 uuid 导入 UUID uuid1 = UUID('00000000-0
开始使用 java.util.UUID。我的问题是如果我有两个 UUID 变量,比如 u1 和 u2,并且我想检查它们是否相等,我可以安全地使用表达式 u1 == u2 还是必须编写 u1 .equa
我浏览了 python UUID 模块的文档。 >>> uuid.uuid4() UUID('82fe5629-6680-4b13-a4e3-7a082f10e038') >>> uuid.uuid4
我正在创建一个程序,我在其中大量使用 UUID 来识别用户和组等内容。鉴于 UUID 已经被占用的可能性极低,我是否应该担心发生碰撞的可能性? 最佳答案 这在很大程度上取决于 A)您的要求 B)底层实
您应该使用哪个版本的 UUID?我看到很多帖子解释了每个版本的含义,但我很难弄清楚什么最适合哪些应用程序。 最佳答案 有两种不同的方式生成 UUID。 如果您只需要一个唯一 ID,则需要版本 1 或版
我知道我们可以轻松提取 uuid 版本号。有没有可靠的方法来提取时间戳、MAC 地址等信息? 谢谢! 最佳答案 符合标准的 UUID 可能是多种变体之一,它看起来像这样: AAAAAAAA-BBBB-
我可以干净地使用私有(private) UUID 变体/版本吗? 我使用我基本上认为是大整数的随机 UUID。现在,我想生成一个“私有(private)”UUID,它不基于众所周知的 5 个变体/版本
我已阅读 man 页面,但我不明白 name 和 namespace 的用途。 For version 3 and version 5 UUIDs the additional command lin
我目前正在项目中使用 boost::uuids::uuid,并且我想序列化包含 boost::uuids::uuid 的对象。我尝试了下面的简单示例,但出现错误: /usr/include/boost
我正在使用 Datastax Java 驱动程序在 Cassandra 数据库中执行基本的插入语句。我的主键列是uuid类型。从我在官方文档中看到的,在 Cassandra 中调用 uuid() 函数
会抛出异常吗? UUID() 是否会悄无声息地失败?是否有任何情况下“myStatus”来自 myStatus = True myUUID = uuid.UUID( someWeirdValue )
在我的 Android 应用程序中,我有这种采用 UUID 的方法。不幸的是,当我这样做时: OverviewEvent overviewevent = eventAdapter.getOvervie
我有一个简单的 mongo 迁移框架,它正在执行一些传递给它的脚本。 现在我想将我的 LUUID 迁移到 UUID。我写了以下内容: function fixIds(collectionName) {
我有一个非常奇怪的问题是我得到一个有效的 UUID 不是一个有效的 UUID,例如: 'fd31b6b5-325d-4b65-b496-d7e4d16c8a93' is not a valid UUI
我正在测试 Goa对于一个 API。我想使用 uuid 作为 ID 数据类型。我在 controller.go 中修改了以下函数: // Show runs the show action. func
我有一个包含 uuid 和系统列的表。我需要一个查询来仅返回具有 system=1 的 uuid,而不返回具有 system= 1 和 2 的 uuid 最佳答案 SELECT * FROM
我很想了解在 Avro 中编码一种非常特定类型的数据的最佳实践:UUID。 最佳答案 到目前为止,我发现的唯一方法是定义自定义 UUID: { "namespace" : "your.namesp
我是一名优秀的程序员,十分优秀!