【问题标题】:If I don't have a Bluetooth LE device am I just out of luck with trying to write a program?如果我没有蓝牙 LE 设备,我只是在尝试编写程序时不走运吗?
【发布时间】:2014-06-18 14:44:50
【问题描述】:

我在本网站和互联网上的许多帖子中看到有关“设备不受支持”等问题的问题,所以我觉得我遇到的问题不是唯一的。

让我感到困惑(相信我,我已经搜索了一整天)是我最近买了一台新的 Macbook Pro 电脑(这东西上的 BT 肯定是 LE),升级到 Mavericks,并且正在使用 Xcode 5。但不管,我下载了哪些示例代码,无论是来自 BT SIG 还是 CSR 等,我总是得到相同的基本错误(在 iOS 模拟器上):

“设备不受支持”的影响和 关于它无法运行的一些问题,因为它没有打开电源(我确实尝试通过将 central.state 调用包装在一个 if 块中来解决)

那么,如果我们没有 LE 设备,像我这样今天开始编写蓝牙代码的人是不是就搞砸了? 4.0 之前的所有 BT 代码是从地球上掉下来还是被弃用了?

有没有一种简单的方法可以强制我的代码以某种“非 LE”模式运行?

至于我使用的代码,我从 BT SIG 下载了快速启动工具包,但没有任何效果,即使是我找到的简单扫描程序。呃,有什么想法吗?

我的最终目标是编写一些可以正常运行的东西,加载到我的 iPhone 4 上,扫描并与我的汽车音响配对,并抓取它发出的所有外围广告,看看我能做什么(到)立体声音响。

谢谢大家。

【问题讨论】:

  • 我用来自NSScreencast 的代码做了一些 iBeacon 测试。

标签: ios iphone bluetooth bluetooth-lowenergy core-bluetooth


【解决方案1】:

虽然您的计算机确实具有蓝牙低功耗/蓝牙 4.0/蓝牙智能(它们都是同一事物的不同名称)功能,但模拟器无法使用这些功能。不久前,您可以在 Mac 上添加一个额外的 BT4.0 加密狗,然后从模拟器中访问它,但这不再受支持 - 请参阅 Does the iPhone simulator in Xcode support Bluetooth Low Energy?

您可以仅使用您的计算机在 Xcode for OSX 中开发 BT4.0/BLE 代码,但如果您想开发和测试 iOS 代码,您将需要支持 BLE 的 iOS 设备(iPhone 4S 或更高版本、iPad mini/3rd gen /Air 或 iPod Touch 第 5 代)

只能通过Apple MFI program 访问非 BT4 设备,但一些通用配置文件除外,例如免提和 A2DP 流式传输 - 但这些设备会作为音频设备而非蓝牙设备暴露给您的程序。

如果您有 iPhone 4S(不是 iPhone 4),那么您可以使用 App Store 中的 LightBlue 应用来查看您的汽车音响是否在宣传任何 BLE 服务(可能不是)。

【讨论】:

  • 很好的答案。我想知道这个培训视频中的用户:developer.bluetooth.org/DevelopmentResources/SiteAssets/… 是如何在没有错误的情况下运行模拟器的,但我敢打赌他当时正在使用加密狗。听起来是时候升级 iPhone 了。
  • iOS 访问 BT Classic 配置文件不是 MFI 计划的一部分。这些支持级别在此处概述:support.apple.com/kb/HT3647
  • 在蓝牙级别与蓝牙外围设备的交互是通过 MFI。根据我的回答,在功能级别与蓝牙外围设备的交互(例如向音频设备发送音频)是通过适当的音频框架进行的。例如,如果汽车音响除了 A2DP 配置文件外还公开了用于高级控制的串行端口配置文件,则您的应用只能通过 MFI 和外部附件框架与该配置文件进行交互。
【解决方案2】:

crawdaddy18,Bluetooth Smart/4.0/LE 是根本不同的技术,然后我们称之为经典蓝牙(2.0/2.1/EDR/BR...这是您在汽车音频示例中所指的东西)。如果您想查看汽车音响的情况,请查看它支持的配置文件(应在文档中列出)。那就看这里吧:

https://developer.bluetooth.org/TechnologyOverview/Pages/Profiles.aspx#Profiles

此页面列出了所有“经典”配置文件。您应该在列表中找到与您的汽车相匹配的那些。然后您就会知道您的车载音响支持哪些功能。

然后,开始与操作系统文档竞赛,查看经典蓝牙的对象模型。通常这些要么由代表配置文件的对象模型支持,要么通过 RFCOM 以某种方式进行争论......但每个操作系统都有点不同。

但大多数现有工具(包括应用程序加速器)都旨在让您探索 LE(智能)设备。如果您想使用应用程序加速器之类的工具来查看非 LE 设备,则必须重新调整代码以切换您在操作系统 SDK 中使用的对象模型。您现在发现的最新工具都面向 LE 方面的原因是,这是附件(和蓝牙行业)大规模增长的方向。但也有大量示例代码可帮助创建应用程序来扫描和连接到经典蓝牙设备。

【讨论】:

  • iOS 不支持 RFCOM 或蓝牙经典串行端口配置文件,除非通过 MFI 程序和外围设备中的 Apple 身份验证芯片。即使是 A2DP 和 HID 等受支持的协议也仅作为音频/键盘功能公开,而不是作为蓝牙对象公开
  • 即使使用 MFi 程序,您也不能使用 SPP,而必须求助于 iAP2,它是 Apple 独有的,本质上是添加元数据的 SPP 变体。
猜你喜欢
  • 1970-01-01
  • 2016-12-02
  • 2021-12-26
  • 1970-01-01
  • 2014-10-04
  • 2014-10-04
  • 2021-09-06
  • 2016-04-11
  • 1970-01-01
相关资源
最近更新 更多