【问题标题】:Bluetooth connection to LEGO Mindstorms EV3 brick from iOS app从 iOS 应用程序蓝牙连接到 LEGO Mindstorms EV3 积木
【发布时间】:2013-09-07 20:02:31
【问题描述】:

有没有人知道如何从一个自写的 iOS 应用程序建立蓝牙连接到 新的 LEGO Mindstorms EV3 可编程积木?

我尝试通过 CBCentralManager 的 scanForPeripheralsWithServices:options: 方法来做到这一点, 但砖块无法识别。

但如果我在 iPhone 的设置中启用蓝牙,那么 EV3 设备就会显示在那里。 LEGO(“指挥官”)的 AppStore 中还有一个应用程序,它通过蓝牙与积木交谈,所以我认为这通常应该是可能的(据我所知,以前的 Mindstorms NXT 积木是不可能的)。

有人知道我该怎么做吗?

谢谢!

【问题讨论】:

  • 我也想知道在哪里可以找到适用于 iphone 和 android 的蓝牙协议。让我知道你的进展plz
  • here 此链接中的某些信息可能是相关的。 iphone 只允许蓝牙连接到耳机和其他 ios 设备。不知道官方应用是如何实现的
  • 您是否将任何服务传递给服务数组?如果你是,你可能会挡住砖头。另外,您确定将委托设置为 self 吗?
  • Mindstorms EV3 是一款 MFi 设备(非 LE 蓝牙),因此您无需使用 Core 蓝牙(蓝牙 LE)与之通信。您改为使用外部附件框架,但您需要知道他们为此设置的协议才能与设备通信。我不确定他们是否在任何地方发布。

标签: ios bluetooth lego mindstorms


【解决方案1】:

如前所述,该设备未使用 CoreBluetooth 列出,使用 EAcessory 框架获取,您需要在 App-Info.plist 中的 UISupportedExternalAccessoryProtocols 中包含“COM.LEGO.MINDSTORMS.EV3”项:

<EAAccessory: 0x15567180> {
  connected:YES
  connectionID:18565483
  name: MFI Accessory
  manufacturer: LEGO
  modelNumber: DM240411
  serialNumber: 
  firmwareRevision: 1.0.0
  hardwareRevision: 1.0.0
  protocols: (
    "COM.LEGO.MINDSTORMS.EV3"
)
  delegate: (null)
}

与 Lego 应用程序一样,您需要先使用设置应用程序连接到 EV3。 然后,查看 Apple EADemo 示例,它展示了如何使用 EASession(封装读/写流)。

也许发送像从 monobrick.dk 源代码中收集的 C# 这样的数据(在 Mailerdaimon 回答中说)会起作用...我将通过 Wifi 尝试(在将 C# 移植到 ObjC 之后,长期工作),然后,写到 EASession 可能更容易。完成后我会更新这个答案。

【讨论】:

    【解决方案2】:

    您必须等到 Lego 发布 SDK,该 SDK 希望包含有关协议的信息。 NXT 可以做到,我认为 EV3 也可以。

    与此同时,您可以尝试通过 Wifi(possible right now)发送消息。

    【讨论】:

      【解决方案3】:

      请注意,EV3 通过蓝牙进行通信有两种协议。一种由 iPhone 上的 LEGO EV3 应用程序使用,另一种可通过 USB-HID 和 WiFi 使用,部分由Communication developer manualsource code 指定。后一种协议是您应该使用的协议。

      您可以调用/链接my uploader的源代码/查看c4ev3的源代码,看看连接是如何实现的。

      HTH。

      【讨论】:

        【解决方案4】:
        1. 在 EV3 程序块上启用蓝牙和 iPod/iPhone 选项。可以从 EV3 上的工具菜单中完成。
        2. 在 iPhone 上启用蓝牙。
        3. 开始蓝牙配对过程。
        4. 在 iPhone 上启动 Lego EV3 应用程序。 完毕。

        【讨论】:

        • 对不起 - 也许我的问题不够清楚。我想知道如何在我自己编写的应用程序的代码中做到这一点。
        • 这显然不是答案
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-14
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多